1

私は現在シネママシンを使って三人称カメラを作っています。私のプレーヤーの動きは機能し、カメラの回転を考慮して、彼が動いている方向を見てもらいたいと思いました。プレーヤーを動かしながらカメラを動かさないと機能しますが、カメラを動かすとプレーヤーの回転が遅くなり、カメラのすべての動きも遅くなるようです。私の英語で申し訳ありませんが、私のコードが明確であることを願っています:

public class ThirdPersonScript : MonoBehaviour
 
 {
     [SerializeField] private float speed;
     [SerializeField] private float jumpForce;
     [SerializeField] private Transform feet;
     [SerializeField] private LayerMask floorMask;
     [SerializeField] private Transform cam;
 
     private Vector3 direction;
     private Rigidbody rb;
     private bool canJump;
 
     // Start is called before the first frame update
     void Start()
     {
         rb = GetComponent<Rigidbody>();
     }
 
     // Update is called once per frame
     void Update()
     {
         
         direction = new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical"));
         direction = Quaternion.AngleAxis(cam.rotation.eulerAngles.y, Vector3.up) * direction;
 
         if (direction.magnitude > 1.0f)
         {
             direction = direction.normalized;
         }
 
         direction *= speed;
 
         canJump = Input.GetKeyDown(KeyCode.Space) ? true : false;
     }
 
     void FixedUpdate()
     {
       
         if (Physics.CheckSphere(feet.position, 0.1f, floorMask))
         {            
             if (canJump)
                 rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
             else    
                 rb.velocity = new Vector3(direction.x, 0, direction.z);
         }
         else          
             rb.velocity = new Vector3(direction.x, rb.velocity.y, direction.z);
    
         if (direction != Vector3.zero)
         {
             Quaternion targetRotation = Quaternion.LookRotation(direction);
             targetRotation = Quaternion.RotateTowards(transform.rotation, targetRotation, 1080*Time.fixedDeltaTime);
             rb.MoveRotation(targetRotation);
 
         }
     }
 }

そして私のシネママシン設定と私の階層のスクリーンショット: ここに画像の説明を入力

4

1 に答える 1