我目前正致力于在2D中创建Billiards的克隆;一般来说,我对编码相当陌生,但是我已经使用了几次规范化方法,而且从未遇到过这个问题。我已经删除了“使用System.Numerics”,因为它导致了‘Vector2 2’的问题。
变量"shootDistance“是一个没有赋值的浮点数。
Vector2 dimxy = mousePointA.transform.position - transform.position;
float difference = dimxy.magnitude;
mousePointB.transform.position = (Vector2)transform.position + ((dimxy / difference) * currDistance * -1);
mousePointB.transform.position = new UnityEngine.Vector2(mousePointB.transform.position.x, mousePointB.transform.position.y);
shootDirection = Vector2.Normalize(mousePointA.transform.position - transform.position);发布于 2020-05-17 16:17:20
规范化采用Vector3或Vector2,但返回Vector3,因此您将返回值转换为Vector2,您必须编写:(positionB和positionA是Vector3或Vector2)
shootDirection = (Vector2)Vector3.Normalize(positionB - positionA);将Vector2转换为Vector3是在z=0中隐含的
但是Vector3 to Vector2并不是隐式的,所以它是您必须指定强制转换的原因,在本例中,您需要释放z值。
https://stackoverflow.com/questions/61854778
复制相似问题