【问题标题】:Unity-Why is Z axis changing when I move an object on X axis?Unity-为什么在X轴上移动物体时Z轴会发生变化?
【发布时间】:2021-02-12 09:55:59
【问题描述】:

我正在创建一个游戏,其中我将成为一个立方体。但是当我在 X 轴上移动我的立方体时,Z 轴会发生变化。 我还阻止了 X、Y、Z 旋转。

我的代码:

using UnityEngine;
using System.Collections;

public class CubeControl : MonoBehaviour {
    private Vector3 input;

    void Update () {
        if(Input.GetKey(KeyCode.D)){
            input = new Vector3(25, 0, 0);
            rigidbody.AddForce(input);
        }
        if(Input.GetKey(KeyCode.A)){
            input = new Vector3(-25, 0, 0);
            rigidbody.AddForce(input);
        }
        if(Input.GetKey(KeyCode.W)){
            input = new Vector3(0, 0, 25);
            rigidbody.AddForce(input);
        }
        if(Input.GetKey(KeyCode.S)){
            input = new Vector3(0, 0, -25);
            rigidbody.AddForce(input);
        }
    }
}

【问题讨论】:

  • 嘿,分享你的立方体检查器值的快照。此外,最好使用 FixedUpdate 而不是 Update 方法,因为您正在尝试施加恒定的力。
  • 很可能是重力下降的原因。
  • Sooo...我该怎么办?
  • 你改变重力方向了吗?通常它影响到 -Y 方向,而不是 Z 轴。

标签: c# unity3d


【解决方案1】:

看起来您正在世界空间中应用运动。您可能希望在对象空间中应用它。因此,您需要旋转对象变换生成的矢量。比如:

Vector3 input = new Vector3(25,0,0);
input = this.transform.rotation * input;
rigidbody.AddForce(input);

此外,还有几件事可以让您的生活更轻松:

  • 查看Input.GetAxis() 的内容以进行输入。可以简化您的生活,以便稍后进行设置/配置。

  • 我喜欢使用 Vector3.up/Vector3.left/Vector3.forward 等并乘以标量。在想要乘法时让事物看起来更直观。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 2019-08-14
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多