运算符'-'在类型 'Vector2' 和 'Vector3' 的操作数上不明确


target = transform.GetComponent<Camera>().ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, transform.position.z));
crosshairs.transform.position = new Vector2(target.x, target.y);
Vector2 difference = target - player.transform.position;
float rotationZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
player.transform.rotation = Quaternion.Euler(0.0f, 0.0f, rotationZ);

错误消息非常清楚。

隐式(自动)转换Vector3->Vector2,反之亦然Vector2->Vector3- 这意味着您基本上可以使用两种可交换的类型。

但是,运算符-仅针对Vector3 - Vector3Vector2 - Vector2定义。

因此,编译器根本不知道要使用哪一个。

知道Transform.positionVector3我可以猜到targetVector2

而且由于您希望将结果作为Vector2无论如何都只需显式转换即可

Vector2 difference = target - (Vector2) player.transform.position;
>旁注:仅供参考,因为 Unity 中的矢量是结构,您不需要每次都使用new

而不是例如

crosshairs.transform.position = new Vector2(target.x, target.y);

你可以简单地做

crosshairs.transform.position = target;

相关内容

  • 没有找到相关文章

最新更新