【问题标题】:transform.position vector only changing when out of scenetransform.position 向量仅在场景外发生变化
【发布时间】:2017-10-11 02:40:25
【问题描述】:

这是我在编码方面遇到的第一个合法问题,我不知道在哪里可以找到答案。

我有一个对象需要随着时间的推移在 X 维度中移动。这是我拥有的以下代码。

Vector3 temp = transform.position;
temp.x += forwardSpeed * Time.deltaTime;
transform.position = temp;

当我调试时,我可以看到 temp.x 没有改变。但是,当我将对象移出相机区域时,X 开始改变。如果这还不够信息,请告诉我,我将提供更多代码或我需要展示的内容。感谢您的帮助。

【问题讨论】:

  • 您是否查看了您尝试修改temp.x 的变量?同样假设示例已完成,则不需要复制 transform.position.x += forwardSpeed * Time.deltaTime;
  • 当我这样做时,我得到了这个错误Cannot modify a value type return value of 'UnityEngine.Transform.position'. Consider storing the value in a temporary variable 所以我使用 temp 来更改值。

标签: c# unity3d vector position transform


【解决方案1】:

当您设置Vector3 temp = transform.position 时,它会返回一个transform.position 的副本。
在您的情况下,更改 X 位置的正确方法应该是这样的:

transform.position += (Vector3.right * forwardSpeed * Time.deltaTime);

其中 Vector3.right 是 shorthand of writing Vector3(1, 0, 0)
这样,您可以确保语句正在更新 transform.position 向量,而不是它的副本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多