Unity transform.Translate(Vector3.forward);不起作用

问题描述 投票:0回答:3

我是 Unity 的新手,我正在通过 Unity 的“Create With Code”教程学习。他们在这里说,我可以使用 transform.Translate(Vector3.forward);通过 Z 坐标移动对象的命令。但它不起作用。我的错误,如果你需要它: 'Vector3' 是 'UnityEngine.Vector3' 和 'System.Numerics.Vector3' [Assembly-CSharp] 之间的模糊引用,你好,我是 unity 的新手,我正在学习“使用代码创建” “ 教程。他们在这里说,要移动对象,我可以使用 transform.Translate(Vector3.forward);。但它不起作用。这是我的错误:“Vector3”是“UnityEngine.Vector3”和“System.Numerics.Vector3”之间的模糊引用 [Assembly-CSharp]

unity3d
3个回答
1
投票

错误是一个不明确的引用,这意味着类型

Vector3
存在于2个不同的命名空间中,即
UnityEngine
System.Numerics

有3种方法可以解决这个问题:

  1. 明确使用你想要的命名空间
    UnityEngine.Vector3.forward
  2. 创建一个别名来解决与
    using Vector3 = UnityEngine.Vector3
    的冲突。这将创建一个名为
    Vector3
    的别名,它将引用您想要的类型。
  3. 如果可能,删除冲突的命名空间。如果你不使用
    System.Numerics
    命名空间,你可以简单地删除它。否则,请使用上述选项之一。

1
投票

我认为你需要做

public float speed = 10f; 

private void Update() {
    transform.Translate(transform.forward * speed * Time.deltaTime);
}

或者如果你想添加一个按键输入,你可以这样做

public float speed = 10f; 

private void Update() {
    if(Input.GetKey(KeyCode.YourKey) { // Input.GetKey(KeyCode.W) for example and '//' means comment so this won't be included in your code
        transform.Translate(transform.forward * speed * Time.deltaTime);
    }
}

0
投票

两个版本都有效,感谢这两个版本,我很感激。

© www.soinside.com 2019 - 2024. All rights reserved.