C# 可以减去一个矢量吗

C# 可以减去一个矢量吗,c#,unity3d-2dtools,C#,Unity3d 2dtools,在Unity中的2D游戏中,我试图稍微改变球与物体碰撞时的速度,这取决于它已经在移动的方向 为了找到球的运动方向,我一直在使用 public Vector2 ballDirection; public Vector2 lastPosition; void OnCollisionEnter2D(Collision2D boing) { ballDirection = transform.position - lastPosition; lastPosition = transf

在Unity中的2D游戏中,我试图稍微改变球与物体碰撞时的速度,这取决于它已经在移动的方向

为了找到球的运动方向,我一直在使用

public Vector2 ballDirection;
public Vector2 lastPosition; 

void OnCollisionEnter2D(Collision2D boing)
{
    ballDirection = transform.position - lastPosition;
    lastPosition = transform.position;
}
然而,这会引发一个读取错误

错误CS0034运算符“-”在“Vector3”和“Vector2”类型的操作数上不明确。

球与任何对象之间的碰撞打印为UnityEngine.Vector3


是否确实可以减去Vector2,或者我是否能够以某种方式将冲突类型更改为Vector2?

我认为您可以简单地将
Vector3
变量强制转换为
Vector2
(z被丢弃)

或者将
Vector2
变量设置为
Vector3
(z设置为零):


您能检查一下它是否适合您吗?

第一段代码工作得很好。谢谢你,我一直在尝试一切,绞尽脑汁寻找答案。现在,transform.position以矢量3开始,这一点非常明显。我只是假设将ballDirection设置为Vector2意味着任何变换命令也将是Vector2。
((Vector2)transform.position) - lastPosition;
transform.position - ((Vector3)lastPosition);