我正在使用Opsive的第三人称控制器资产。它是一个相当复杂的第三人称控制器,可以控制动画,损坏,移动,输入等。 http://opsive.com/assets/ThirdPersonController/documentation.php
我想更新ControllerHandler.cs脚本,使角色朝着角色朝向的方向移动,无论相机方向如何。 (以旧生化危机游戏的风格)
在原始剧本中,角色将相对于相机朝向的方向向前移动。
我收到了一些改变此剧本中某一行的建议,但是随着这些变化,角色会向一个固定的方向前进。 (E.G。:当我用D键向右转,然后按W向前移动时,角色朝他最初朝向的方向转回并朝那个方向移动。)
以下是该脚本的原始部分:
#if ENABLE_MULTIPLAYER
if ( isLocalPlayer) {
#endif
if (m_Controller.Movement == RigidbodyCharacterController.MovementType.Combat || m_Controller.Movement == RigidbodyCharacterController.MovementType.Adventure) {
m_LookRotation = m_CameraTransform.rotation;
以下是有人告诉我将其更改为:
#if ENABLE_MULTIPLAYER
if ( isLocalPlayer) {
#endif
if (m_Controller.Movement == RigidbodyCharacterController.MovementType.Combat || m_Controller.Movement == RigidbodyCharacterController.MovementType.Adventure) {
m_LookRotation = Quaternion.Euler(PlayerInput.GetAxisRaw(Constants.YawInputName), 0, 0);
不幸的是,这没有我想要的结果。
非常感谢任何帮助。谢谢!
以下是控制器脚本的链接: https://docs.google.com/document/d/1B4sstqtCqRMCLuHuxEuA9I7tO_3W4aHqEZwr73uFDjY/edit?usp=sharing
答案 0 :(得分:1)
我想你想要
transform.position += transform.rotation * Vector3.forward;
完整的代码块看起来像这样......
void Update() {
if (Input.GetKey(KeyCode.W)) {
transform.position += transform.rotation * Vector3.forward * MOVESPEED;
}
}
答案 1 :(得分:0)
我有它的工作。首先看一下图片,它将帮助您正确设置播放器。我的播放器只有两个立方体。我添加了第二个立方体给玩家指向的面孔。我已将这2个多维数据集添加到父对象中,并使用PlayerMovement.cs
移动父对象。
public float rotSpeed;
public float playerSpeed;
void Update()
{
if (Input.GetKey(KeyCode.RightArrow))
{
transform.Rotate( Vector3.up, Time.deltaTime * rotSpeed);
} else if (Input.GetKey(KeyCode.LeftArrow))
{
transform.Rotate(-Vector3.up, Time.deltaTime * rotSpeed);
}
if (Input.GetKey(KeyCode.UpArrow))
{
transform.Translate(Vector3.forward * Time.deltaTime * playerSpeed);
} else if (Input.GetKey(KeyCode.DownArrow))
{
transform.Translate(-Vector3.forward * Time.deltaTime * playerSpeed);
}
}