【问题标题】:Error CS0019: Operator * cannot be applied to operands of types 'Vector3' and 'Vector3 [duplicate]错误 CS0019:运算符 * 不能应用于“Vector3”和“Vector3”类型的操作数 [重复]
【发布时间】:2019-02-15 00:09:53
【问题描述】:

您好,我正在尝试使用此脚本向前移动统一游戏对象,但一直遇到错误 CS0019:运算符 * 无法应用于“.Vector3”和“Vector3”类型的操作数。为什么这是我不明白的。

我的代码是:

 transform.Translate (Vector3.forward * Time.deltaTime * (transform.localScale * 05f));

【问题讨论】:

标签: c# vector transform


【解决方案1】:

根据this,Vector3 对 operator* 有一个重载,它以浮点数作为另一个参数(即,您只能将 Vector3 乘以标量)该操作返回另一个 Vector3。

Transform.localScale 也返回一个 Vector3,再将它乘以 0.5f 返回一个 Vector3。这意味着您的代码正在尝试将两个 Vector3 相乘,这是无法做到的。

也许你想要:

transform.Translate (Vector3.forward.Scale(transform.localScale * 0.5f) * Time.deltaTime);

【讨论】:

  • 这确实回答了这个问题,但应添加至少两个已知选项之一(乘以它们的值或调用 Scale)才能得到更完整的答案
  • ahhh 所以只需将方向 .x 添加到我的本地比例并对其进行排序。
  • 是的,有效:transform.localScale.x * .05f
  • @pete800 forward 在 Z 方向是 1,不是吗?如果每个轴的比例不同,可能会很重要。
  • 干杯是的,我的轴实际上是统一翻转的,所以我最终使用了 localscale.y
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
相关资源
最近更新 更多