Unityで物理演算を考慮した上で物体を動かす

物体が壁に当たると通りぬけできないようにする方法をメモしておく。 物理演算を加味する考慮する場合は直接transform.positionを操作すると通り抜けてしまうのでtransform.rigidbody を操作しないといけない。

public class Ball : MonoBehaviour {

    public float speed = 1000.0f;

    public void Update()
    {
        // 左のキーを押された時に左にオブジェクトを移動する
        if (Input.GetKey (KeyCode.LeftArrow)){
            Vector3 p = transform.position;

            Vector3 currentMoveP = transform.position;
            Vector3 willMoveP= new Vector3(transform.position.x-speed * Time.deltaTime,transform.position.y,transform.position.z);

            transform.rigidbody.AddForceAtPosition(new Vector3(-1 * speed * speed,0,0),willMoveP);

        }

    }

BallにはRigidBodyが加えられていて、壁とBallにBoxColliderがセットされているとBallが壁にあたった時はそれ以上通り抜けできなくなる。

Related Contents

    Page Not Found.

Pickup Contents