ゲームファン【ゲームサイエンス学科ブログ】

当たり判定あかんてー

こんばんは、チームダイコンです。

平日も毎日21時まで学校に居残って開発しています。空調管理がバッチリなので、快適ですし、学校ならチームで集まるにも、互いの家の距離や場所などを考慮せずに済むので、やはり学校での開発が有利だったりします。
そんなわけで、月曜日と火曜日の開発状況について報告します。


前回から続く話にはなりますが、やはり当たり判定が開発上のネックになっています。
初め僕らは、 『矩形で考えるなら、当たっているかどうかなんてif文一つで取れるし、大丈夫でしょう』 なんて考えていたわけですが、そこに落とし穴がありました。

if文一つで分かるのは、あくまで 『当たっているかどうか』 なんです。
それだけじゃ問題なの? ということですが、これはゲームジャンルによって変わります。

まず、シューティングの場合。
当たり判定が必要になるのは、被弾した場合に体力やらなんやらを減らさなければいけないからです。
この場合なら、当たっているかどうかだけが分かれば良いので、それで問題ありません。

しかし、横スクロールアクションの場合。
当たり判定が必要になるのは、キャラクターが壁の中に侵入した際に、キャラクターの座標を壁の外に設定し直してやらなければいけないからです。
意識しなければ、処理自体はシューティングと何も変わらないのでは、と思うこともありますが、少し違います。
キャラクターは、壁の中に入ったら、壁から押し出されます。では、その時にどっちに押し出されるべきなのか、ここに問題があります。

もし、右に押し出すんだ! と決めた場合。キャラクターが左から侵入した場合、プレイヤーにはキャラクターが壁をすり抜けたように見えてしまいます。
左から入って、右に押し出されるわけですから、もちろん通り抜けたように見えて当然です。
かといって、左に押し出すんだ! と決めた場合。右から侵入した場合に、壁をすり抜けたように見えてしまいます。

つまり、押し出す方向を条件によって変える必要がある……具体的に言えば、右から入ったときは右に押し出して、左に入ったときは左に押し出す……こういった処理が必要になるわけです。
これは、 『当たったかどうか』 だけでなく、 『どの方向から当たったのか』 も知らなければいけないということを表します。
こうなると、もはやif文一つでは処理しきれなくなります。更にこれには、ジャンプ中は~、斜めから入ったときは~、などのパターンも加わるので、単純にやろうとしてもどこかで不自然な動きが出てきたりしてしまいます。


正直なところ、当たり判定を担当しているチームメンバーが心配です。バグを解決してはまたどこかで不備が出て~というパターンは、なかなかに精神を摩耗します。もちろん、全員で話し合ったり協力することはままありますが、メインはやはり彼です。初めてのゲーム制作にしては苦労をかけすぎな気もします……。
ただ、それでもめげずに、先生や先輩に助言をもらいながら一つずつ解決していく姿には、哀愁よりも熱意を感じてなりません。アルゴリズムはなかなか複雑で、とくにこういった決まったやり方のないものは、先人に聞けば一発解決! というわけにはいきませんが、少しずつ解決に向かっているようです。


プログラミングは努力が大事だと思います。才能がなければできないという場面は少ないし、諦めなければいずれは完成します。
先のチームメンバーのように、不屈の精神を持って臨んでいけたらと思います。
[PR]



トライデントコンピュータ専門学校 ゲームサイエンス学科についてはコチラ!

by trident-game | 2013-05-28 18:05 | Comments(0)

専門学校トライデント ゲームサイエンス学科のブログ
by trident-game
プロフィールを見る
画像一覧

外部リンク

ゲームプログラミング体験入学

最新のトラックバック

venushack.co..
from venushack.com/..
http://while..
from http://whileli..
http://while..
from http://whileli..
http://www.v..
from http://www.val..
http://www.v..
from http://www.val..

ライフログ

検索

ブログパーツ

ファン

ブログジャンル