実現したいこと
- 2D格闘ゲームの押し合い判定機能を動作するようにしたい
前提
Unity2Dで格闘ゲームを製作しています。
以下、ストゼミ7時間目にあるような、押し合い判定を実現したいと思っています。
https://game.capcom.com/cfn/sfv/column-130393.html
「押し当たりは四角で作られてますが、ジャンプで相手の押し合い上に乗っかったりはできず、
押し出されて必ずどちらかに落ちる様に設定されてます。」
横から押すことに関しては特に問題ないかと思うのですが、上から乗る際の挙動に悩んでいます。
発生している問題・エラーメッセージ
BoxCollision2Dの上から接触した場合、次のフレームからX座標はBoxCollision2Dの外にぴったり押し出され、
Y座標の移動速度はそのままで落ちる、というようにしたいのですが、
接触点からちょうど外に押し出す距離を測る方法が分かっていません。
該当のソースコード
C#
1 private void OnTriggerEnter2D(Collider2D collision) 2 { 3 if (collision.CompareTag("Enemy")) //敵に当たった時 4 { 5 if (isRight) //右向いていたら 6 { 7 transform.position = new Vector2(transform.position.x - 1f , transform.position.y); 8 } 9 else if (!isRight) //左向いていたら 10 { 11 transform.position = new Vector2(transform.position.x + 1f, transform.position.y); 12 } 13 } 14 }
試したこと
(BoxCollider2D Col)で取得し、
Transform trs = Col.transform;
Vector2 sc = trs.lossyScale;
などでBoxCollision2Dの座標を確認できるかと思いましたがあまり理解できませんでした。
補足情報(FW/ツールのバージョンなど)
Unity2022.3.10f1 <DX11>
回答1件
あなたの回答
tips
プレビュー