【发布时间】:2018-06-18 02:22:30
【问题描述】:
我正在使用一个操纵杆在我的播放器周围移动,并连接了一个刚体组件。当玩家移动时,我希望它相应地在 Y 轴上旋转。例如。如果玩家向右移动,它应该在 Y 轴上旋转一定角度。
请注意,我的游戏是正交视图中的玩家,这就是为什么移动基于相机正确移动的原因。
void FixedUpdate()
{
Vector3 moveVector = (transform.right * joystick.Horizontal + transform.forward * joystick.Vertical).normalized;
Vector3 relativeMovement = Camera.main.transform.TransformVector(moveVector);
rb.AddForce(relativeMovement * speed);
relativeMovement.y = 0;
如果需要,我的操纵杆的代码。
using UnityEngine;
using UnityEngine.EventSystems;
public class FloatingJoystick : Joystick
{
Vector2 joystickCenter = Vector2.zero;
public bool joyStickWorking = false;
public bool playerMoving = false;
void Start()
{
background.gameObject.SetActive(false);
}
public override void OnDrag(PointerEventData eventData)
{
Vector2 direction = eventData.position - joystickCenter;
inputVector = (direction.magnitude > background.sizeDelta.x / 2f) ? direction.normalized : direction / (background.sizeDelta.x / 2f);
handle.anchoredPosition = (inputVector * background.sizeDelta.x / 2f) * handleLimit;
playerMoving = true;
}
public override void OnPointerDown(PointerEventData eventData)
{
background.gameObject.SetActive(true);
background.position = eventData.position;
handle.anchoredPosition = Vector2.zero;
joystickCenter = eventData.position;
joyStickWorking = true;
}
public override void OnPointerUp(PointerEventData eventData)
{
background.gameObject.SetActive(false);
inputVector = Vector2.zero;
joyStickWorking = false;
playerMoving = false;
}
}
【问题讨论】:
-
你问的是什么问题?
-
当我的玩家移动时,我希望玩家对象也随着移动而旋转。因此,如果汽车直行并右转,汽车的前部也应该转弯。
-
你可能需要elaborate来回答这个问题。例如,您当前的代码是否存在错误(什么不工作?),或者它正在工作但您询问如何更好地实现它等?