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