在Unity的2D游戏中,我试图略微改变球与物体碰撞时的速度,具体取决于它已经进入的方向。
为了找到球的行进方向,我一直在使用
public Vector2 ballDirection;
public Vector2 lastPosition;
void OnCollisionEnter2D(Collision2D boing)
{
ballDirection = transform.position - lastPosition;
lastPosition = transform.position;
}
然而,这会引发错误读取
Error CS0034 Operator '-' is ambiguous on operands of type 'Vector3' and 'Vector2'
球和任何物体之间的碰撞打印为UnityEngine.Vector3
确实可以减去Vector2,还是能够以某种方式将碰撞类型更改为Vector2?
答案 0 :(得分:2)
我认为您可以简单地将Vector3
变量转换为Vector2
(z被丢弃)
((Vector2)transform.position) - lastPosition;
或Vector2
变量Vector3
(z设置为零):
transform.position - ((Vector3)lastPosition);
请你检查它是否适合你?