【发布时间】:2019-02-15 00:09:53
【问题描述】:
您好,我正在尝试使用此脚本向前移动统一游戏对象,但一直遇到错误 CS0019:运算符 * 无法应用于“.Vector3”和“Vector3”类型的操作数。为什么这是我不明白的。
我的代码是:
transform.Translate (Vector3.forward * Time.deltaTime * (transform.localScale * 05f));
【问题讨论】:
您好,我正在尝试使用此脚本向前移动统一游戏对象,但一直遇到错误 CS0019:运算符 * 无法应用于“.Vector3”和“Vector3”类型的操作数。为什么这是我不明白的。
我的代码是:
transform.Translate (Vector3.forward * Time.deltaTime * (transform.localScale * 05f));
【问题讨论】:
根据this,Vector3 对 operator* 有一个重载,它以浮点数作为另一个参数(即,您只能将 Vector3 乘以标量)该操作返回另一个 Vector3。
Transform.localScale 也返回一个 Vector3,再将它乘以 0.5f 返回一个 Vector3。这意味着您的代码正在尝试将两个 Vector3 相乘,这是无法做到的。
也许你想要:
transform.Translate (Vector3.forward.Scale(transform.localScale * 0.5f) * Time.deltaTime);
【讨论】:
forward 在 Z 方向是 1,不是吗?如果每个轴的比例不同,可能会很重要。