【2D】ゲーム作成ツールGameMaker part2【マンセー】at GAMEDEV
【2D】ゲーム作成ツールGameMaker part2【マンセー】 - 暇つぶし2ch308:名前は開発中のものです。
06/11/07 00:37:41 B1V1c0H3
305ではないが、調べてみた。原因がわかった気がする・・・。
solid オブジェクトとの衝突イベンでは、衝突判定→ENDステップ との間で speed に値があると移動してしまう性質があるので、うまくいっていない。

>>305 のサンプルで説明。
斜めに並んでいる白いブロックの接続付近に向かって、下から左上にジャンプするとまれに引っかかる。
まず、右上のブロック(ID:100177)にぶつかる。
solid オブジェクトの衝突の性質により、100177との衝突イベントのあとに、3ドット(hspeedの大きさ)だけ左にずれる。
ここで、衝突したポイントが、左の壁 (ID:100176) まで3ドット以内の位置にいると、めり込んでしまう。
これは、左の壁のID番号が100177より若いので、そのステップ中での衝突判定がすでに終わってしまってるため。
(もし左の壁がのID番号が100177より大きいなら、同ステップで衝突判定が発生するので、このタイミングでの「めり込み」は発生しない)

ヘルプを読み返してみたが、これは仕様らしい。
個人的に、衝突直前まで戻すのは良いが、衝突のあとに移動してしまう仕様は余計なお世話感があるなぁ。
>>305のサンプルを修正するには、この仕様を頭に入れてコードを書き直さないといけないかも。

知らない人がいるかもしれないから、solid オブジェクトの衝突イベントについてのまとめを改めて。
【衝突発生】
 ↓
(衝突したインスタンスは、xprevious yprevious まで戻される)
 ↓
【衝突イベントで設定した処理】
 ↓
(hspeed vspeed gravity 等が設定されていたら、移動する)
 ↓
【End Stepイベントへ】
※()内は自動で処理される。 solid 属性でないもの同士の衝突イベントならば、処理されない。

わかりづらかったらゴメン。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch