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);
问问题
37 次
1 回答
6
错误信息非常清楚。
有隐式(自动)转换Vector3
->Vector2
反之亦然Vector2
->Vector3
- 这意味着您基本上可以使用可交换的两种类型。
然而,运算符-
仅定义为Vector3 - Vector3
or Vector2 - Vector2
。
所以编译器根本不明白你想使用哪一个。
知道那Transform.position
是 aVector3
我可以猜到那target
是Vector2
.
并且由于您希望获得结果,因此Vector2
只需显式转换
Vector2 difference = target - (Vector2) player.transform.position;
旁注:仅供参考,因为 Unity 中的向量是您不需要new
每次都使用的结构。
而不是例如
crosshairs.transform.position = new Vector2(target.x, target.y);
你可以简单地做
crosshairs.transform.position = target;
于 2022-01-13T12:42:45.860 回答