본문 바로가기

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

Rigidbody AddForce 한계속도 정하기

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();
    }

 

결과

 

'유니티 3D기본(Roll A Ball)' 카테고리의 다른 글

회전, 좌우상하 움직이는 장애물 만들기  (1) 2021.11.15
23 . 게임 빌드  (0) 2021.10.27
22. 플레이어가 맵에서 낙하 시 리스폰  (0) 2021.10.27
21. UI 만들기  (0) 2021.10.27
20. Scene 추가  (0) 2021.10.27