【问题标题】:Adding rotation to a moving rigid body object向移动的刚体对象添加旋转
【发布时间】: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来回答这个问题。例如,您当前的代码是否存在错误(什么不工作?),或者它正在工作但您询问如何更好地实现它等?

标签: unity3d 3d


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多