【发布时间】:2019-07-20 17:42:40
【问题描述】:
在尝试使精灵的枢轴与光标位置相同时 - Vector3 objPos - 并从光标位置实例化对象减去一些差异 - Vector3 diff - Unity 抛出一个错误,提示“运算符'-'在'Vector2' 和 'Vector3' 类型的操作数”,即使这两个变量都是 Vector3 的
public Transform baseDot;
public KeyCode mouseLeft;
public Vector2 mousePosition;
Vector2 mousePos;
Vector2 objPos;
void OnMouseOver()
{
Vector3 diff = new Vector3(2f, 2.8f, 0f);
float xPos = Camera.main.ScreenToWorldPoint(mousePos).x;
float yPos = Camera.main.ScreenToWorldPoint(mousePos).y;
mousePos = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
objPos = new Vector3(xPos, yPos, -10);
if (Input.GetKey(mouseLeft) )
Instantiate(baseDot, objPos-diff, baseDot.rotation);
}
【问题讨论】:
-
你说这两个变量都是
Vector3,但它们不是。您已将objPos声明为Vector2。由于 Unity 有一个隐式运算符,可将Vector2转换为Vector3,因此不会出现任何编译时错误。将脚本顶部的变量更改为 Vector3 就可以了。