C# 如何减去两个矢量?我想测量两个物体之间的距离
我想测量两个物体的距离(仅在Z轴上),如果这些物体的距离等于50,那么做点什么……但我不能减去两个矢量3 大概是这样的:C# 如何减去两个矢量?我想测量两个物体之间的距离,c#,unity3d,C#,Unity3d,我想测量两个物体的距离(仅在Z轴上),如果这些物体的距离等于50,那么做点什么……但我不能减去两个矢量3 大概是这样的: Vector3 Bullet; Vector3 player; public Vector3 distance; Bullet = new Vector3(0f, 0f, transform.position.z); Player = new Vector3(0f, 0f, player.position.z); if (distance = Bullet -
Vector3 Bullet;
Vector3 player;
public Vector3 distance;
Bullet = new Vector3(0f, 0f, transform.position.z);
Player = new Vector3(0f, 0f, player.position.z);
if (distance = Bullet - Player)
{
Debug.Log("out of range");
}
使用Vector3.0距离
Vector3 bullet = new Vector3(0f, 0f, player.position.z);;
Vector3 player = new Vector3(0f, 0f, transform.position.z);
public float distance;
if (distance >= Vector3.Distance(other.position, transform.position))
{
print("out of range: " + dist);
}
资料来源:
或者你可以直接减去z值。如果只计算z值,则无需使用向量函数。如果只需要并使用z轴,则根本不需要额外的向量 您可以在一个轴上计算距离,如下所示:
Mathf.Abs(transform.position.z - player.position.z);
此外,为了检查“超出范围”,您需要使用“>=”而不是“==”以避免出现错误,例如,在一帧中,您的距离可能从49.9跳到51.1,在这种情况下,使用“==”的代码将失败
因此,最终代码应该是:
public Vector3 distance;
if (Mathf.Abs(transform.position.z - player.position.z) >= distance)
{
Debug.Log("out of range");
}
这不是你需要的减法,只需计算2个矢量之间的距离3
const v3Obj1 = { x: 10, y: 10, z: 75 }
const v3Obj2 = { x: -10, y: 15, z: 75 }
function distance(x0, y0, z0, x1, y1, z1) {
let deltaX = x1 - x0
let deltaY = y1 - y0
let deltaZ = z1 - z0
let distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ)
return parseFloat(distance)
}
console.log(
distance(v3Obj1.x, v3Obj1.y, v3Obj1.z, v3Obj2.x, v3Obj2.y, v3Obj2.z)
) // return {Float} 20.615528128088304
//代码测试你的问题不是太多,以至于你不能减去两个向量,问题是a。它只给出另一个向量,而不是距离和b。您没有正确地进行比较(single=是赋值,==是比较)。在开始自己的项目之前,您真的应该学习一些关于c#和unity的教程。即使你现在看起来不是这样,从长远来看,它也会为你节省大量的时间。