2017-11-03 16 views
0

私はオブジェクトが常にマウスに面して回転していますが、回転は瞬時です。ユーザーがゆっくりとマウスポインタに向くように回転を遅くしたいと思います。回転する剛体の速度を制御するにはどうすればよいですか?

私はここからのコードを使用しています:それはに向けて徐々にlerpsとして、このリンクからソリューションが動作するはず

 // Create a ray from the mouse cursor on screen in the direction of the camera. 
     Ray camRay = Camera.main.ScreenPointToRay (Input.mousePosition); 

     // Create a RaycastHit variable to store information about what was hit by the ray. 
     RaycastHit floorHit; 

     // Perform the raycast and if it hits something on the floor layer... 
     if(Physics.Raycast (camRay, out floorHit, camRayLength, floorMask)) 
     { 
      // Create a vector from the player to the point on the floor the raycast from the mouse hit. 
      Vector3 playerToMouse = floorHit.point - transform.position; 

      // Ensure the vector is entirely along the floor plane. 
      playerToMouse.y = 0f; 

      // Create a quaternion (rotation) based on looking down the vector from the player to the mouse. 
      Quaternion newRotation = Quaternion.LookRotation (playerToMouse); 

      // Set the player's rotation to this new rotation. 
      playerRigidbody.MoveRotation (newRotation); 
     } 
+0

回転のために[lerp(https://docs.unity3d.com/ScriptReference/Quaternion.Lerp.html)関数をチェックします。これにより、指定された時間内にオブジェクトを回転させることができます。 – Thalthanas

答えて

0

:ここ https://unity3d.com/learn/tutorials/projects/survival-shooter

は、私が問題chaning持っていたコードのスニペットです求められていた回転。

https://answers.unity.com/questions/1093355/rotate-object-smoothly-over-time-when-key-pressed.html

public float smooth = 1f; 
    private Quaternion targetRotation; 
    void Start(){ 
      targetRotation = transform.rotation; 
    } 

    void Update() { 
     if (Input.GetKeyDown (KeyCode.Space)) { 
      targetRotation *= Quaternion.AngleAxis(60, Vector3.up); 
     } 
     transform.rotation= Quaternion.Lerp (transform.rotation, targetRotation , 10 * smooth * Time.deltaTime); 
    } 
関連する問題