C# 如何使Fps控制器旋转并面向目标

C# 如何使Fps控制器旋转并面向目标,c#,unity3d,C#,Unity3d,我正在开发我的第一个游戏,所以我对Unity有点陌生。所以我的问题是,我试图通过按下按钮来旋转Fps控制器,使其面向目标。我试图通过附加此代码来单独旋转相机,但只有相机旋转,所以它完全扰乱了行走 public class PlayerRotate : MonoBehaviour { public Transform target; void Update(){ if(Input.GetKeyDown("r")){ print (

我正在开发我的第一个游戏,所以我对Unity有点陌生。所以我的问题是,我试图通过按下按钮来旋转Fps控制器,使其面向目标。我试图通过附加此代码来单独旋转相机,但只有相机旋转,所以它完全扰乱了行走

public class PlayerRotate : MonoBehaviour {

     public Transform target;

     void Update(){
         if(Input.GetKeyDown("r")){
             print ("Rotate");
             transform.LookAt(target.position);
         }
     } 
 }

我还尝试将相同的脚本附加到Fps控制器,但什么也没发生。非常感谢任何人的帮助。

FPSCaracterController旋转由包含其资源的MouseLook.cs脚本驱动。 如果打开它,您将看到控制旋转的功能:

public void LookRotation(Transform character, Transform camera)
此方法使用鼠标值直接修改旋转值,无需任何中间操作。因此,如果要更改FPController的旋转,则需要修改此方法(或此类)

例如,我进行了此修改,每次用户按下“U”键时,FPC控制器都会旋转180度:


谷歌FPS控制器脚本。。。谢谢你的回复,我一定会试试的
public void LookRotation(Transform character, Transform camera)
{
     float yRot = CrossPlatformInputManager.GetAxis("Mouse X") * XSensitivity;
     float xRot = CrossPlatformInputManager.GetAxis("Mouse Y") * YSensitivity;

        m_CharacterTargetRot *= Quaternion.Euler(0f, yRot, 0f);
        m_CameraTargetRot *= Quaternion.Euler(-xRot, 0f, 0f);

        if (ORPargaModification)
        {
            if(Input.GetKeyDown(KeyCode.U))
            {
                Debug.Log("U pressed");
                m_CharacterTargetRot *= Quaternion.Euler(0f, 180, 0f);
            }
            character.localRotation = m_CharacterTargetRot;
            camera.localRotation = m_CameraTargetRot;

        }
        else
        {
            if (clampVerticalRotation)
            m_CameraTargetRot = ClampRotationAroundXAxis(m_CameraTargetRot);

            if (smooth)
            {
                character.localRotation = Quaternion.Slerp(character.localRotation, m_CharacterTargetRot,
                    smoothTime * Time.deltaTime);
                camera.localRotation = Quaternion.Slerp(camera.localRotation, m_CameraTargetRot,
                    smoothTime * Time.deltaTime);
            }
            else
            {
                character.localRotation = m_CharacterTargetRot;
                camera.localRotation = m_CameraTargetRot;
            }

        }

        UpdateCursorLock();
    }