私のキャラクターはRigibody2DとBoxCollider
あなたがRigibody2D
を使用する場合は、あなたもないBoxCollider
BoxCollider2D
を使用する必要があります。壁にはBoxCollider2D
もあることを確認してください。
transform.Translate
またはtransform.position
を使用してオブジェクトを移動すると、衝突しません。 GameObjectにRigidbody2D が添付されている場合は、Rigidbody2D.velocity
,Rigidbody2D.AddForce
(Rigidbody2D.AddXXX
)またはRigidbody2D.MovePosition
で移動する必要があります。
FixedUpdate()
機能でこの特定のことを行う方が良いです。また、の代わりにGetAxisRaw
を使用して、プレーヤーが停止するようにしてください。すぐにキー/指が離されます。
public float speed = 2f;
Rigidbody2D rg2d;
void Start()
{
rg2d = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
float h = CrossPlatformInputManager.GetAxisRaw("Horizontal");
float v = CrossPlatformInputManager.GetAxisRaw("Vertical");
Vector2 tempVect = new Vector2(h, v);
tempVect = tempVect.normalized * speed * Time.fixedDeltaTime;
rg2d.MovePosition((Vector2)transform.position + tempVect);
}
速度が速すぎたり遅くなったりすると、いつでも速度を下げたり上げたりすることができます。
あなたのキャラクターはBoxCollider2Dを持っていますか(最後に2Dを書き留めてください)。あなたの壁にも同じです。 –
はい、BoxCollider2Dがあります – Sleeper
transform.Translateの代わりにrigidbody.MovePositionを使用しようとしています。また、コリジョンマスクとオブジェクトのレイヤーを確認してください –