【2D】ゲーム作成ツールGameMaker part2【マンセー】at GAMEDEV【2D】ゲーム作成ツールGameMaker part2【マンセー】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト308:名前は開発中のものです。 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 属性でないもの同士の衝突イベントならば、処理されない。 わかりづらかったらゴメン。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch