유니티 3D기본(Roll A Ball)

Rigidbody AddForce 한계속도 정하기

콜트 2021. 11. 15. 21:21

velocity를 이용해 최고속도 제한

 

소스코드

public float movePower;
public float maxVelocityX, maxVelocityZ;

void limitMoveSpeed() {
        if (rigid.velocity.x > maxVelocityX)
        {
            rigid.velocity = new Vector3(maxVelocityX, rigid.velocity.y, rigid.velocity.z);
        }
        if (rigid.velocity.x < (maxVelocityX * -1))
        {
            rigid.velocity = new Vector3((maxVelocityX * -1), rigid.velocity.y, rigid.velocity.z);
        }

        if (rigid.velocity.z > maxVelocityZ)
        {
            rigid.velocity = new Vector3(rigid.velocity.x, rigid.velocity.y, maxVelocityZ);
        }
        if (rigid.velocity.z < (maxVelocityZ * -1))
        {
            rigid.velocity = new Vector3(rigid.velocity.x, rigid.velocity.y, (maxVelocityZ * -1));
        }
    }

    void move() {
        float x = Input.GetAxisRaw("Horizontal");
        float z = Input.GetAxisRaw("Vertical");
        Vector3 moveVec = new Vector3(x, 0, z) * movePower *  Time.deltaTime;
        rigid.AddForce(moveVec, ForceMode.Impulse);
        limitMoveSpeed();
    }

 

결과