유니티 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();
}
결과