如何更改第三人称控制器移动



我正在使用Unity Standard资源中的第三人称控制器移动。我想改变移动的方向,例如当我按"W"或"向上箭头键"时,它正在向右移动,当我按"D"或"向右箭头键"时,它正在向后移动,当我按"S"或"向下箭头键"时,它正在向左移动,当我按"A"或"向左箭头键"时,它正在向前移动。

移动脚本:

using System;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;
namespace UnityStandardAssets.Characters.ThirdPerson
{
[RequireComponent(typeof (ThirdPersonCharacter))]
public class ThirdPersonUserControl : MonoBehaviour
{
private ThirdPersonCharacter m_Character; // A reference to the ThirdPersonCharacter on the object
private Transform m_Cam;                  // A reference to the main camera in the scenes transform
private Vector3 m_CamForward;             // The current forward direction of the camera
private Vector3 m_Move;
private bool m_Jump;                      // the world-relative desired move direction, calculated from the camForward and user input.

private void Start()
{
// get the transform of the main camera
if (Camera.main != null)
{
m_Cam = Camera.main.transform;
}
else
{
Debug.LogWarning(
"Warning: no main camera found. Third person character needs a Camera tagged "MainCamera", for camera-relative controls.", gameObject);
// we use self-relative controls in this case, which probably isn't what the user wants, but hey, we warned them!
}
// get the third person character ( this should never be null due to require component )
m_Character = GetComponent<ThirdPersonCharacter>();
}

private void Update()
{
if (!m_Jump)
{
m_Jump = CrossPlatformInputManager.GetButtonDown("Jump");
}
}

// Fixed update is called in sync with physics
private void FixedUpdate()
{
// read inputs
float h = CrossPlatformInputManager.GetAxis("Horizontal");
float v = CrossPlatformInputManager.GetAxis("Vertical");
bool crouch = Input.GetKey(KeyCode.C);
// calculate move direction to pass to character
if (m_Cam != null)
{
// calculate camera relative direction to move:
m_CamForward = Vector3.Scale(m_Cam.forward, new Vector3(1, 0, 1)).normalized;
m_Move = v*m_CamForward + h*m_Cam.right;
}
else
{
// we use world-relative directions in the case of no main camera
m_Move = v*Vector3.forward + h*Vector3.right;
}
#if !MOBILE_INPUT
// walk speed multiplier
if (Input.GetKey(KeyCode.LeftShift)) m_Move *= 0.5f;
#endif
// pass all parameters to the character control script
m_Character.Move(m_Move, crouch, m_Jump);
m_Jump = false;
}
}
}

谁能告诉我如何改变这些分配


找到代码的这一部分:

float h = CrossPlatformInputManager.GetAxis("Horizontal");
float v = CrossPlatformInputManager.GetAxis("Vertical");

并交换它们:

float v = CrossPlatformInputManager.GetAxis("Horizontal") * -1;
float h = CrossPlatformInputManager.GetAxis("Vertical") * -1;

更新:为了纠正相反的运动方向,我添加了 -1

最新更新