C# 在三维空间中沿向量查找点
我在3d空间中有两个点,我想得到它们之间的点列表,这些点彼此之间的距离为“r”。如何使用unity函数最容易地实现这一点?C# 在三维空间中沿向量查找点,c#,vector,unity3d,3d,C#,Vector,Unity3d,3d,我在3d空间中有两个点,我想得到它们之间的点列表,这些点彼此之间的距离为“r”。如何使用unity函数最容易地实现这一点? 您可以使用矢量3来完成它。向移动我不熟悉单位函数,但您正式描述了两点之间的线性插值。点A和B之间的线段可以用参数化形式描述 A * s + B * (1-s) 其中s来自间隔[0,1]Vector3[]GetPointsInbetween(Vector3 a、Vector3 b、浮点偏移量){ Vector3[] GetPointsInbetween(Vector3 a,
您可以使用
矢量3来完成它。向移动我不熟悉单位函数,但您正式描述了两点之间的线性插值。点A
和B
之间的线段可以用参数化形式描述
A * s + B * (1-s)
其中s
来自间隔[0,1]
Vector3[]GetPointsInbetween(Vector3 a、Vector3 b、浮点偏移量){
Vector3[] GetPointsInbetween(Vector3 a, Vector3 b, float offset){
int count = (int)((b - a).magnitude / offset);
Vector3[] result = new Vector3[count];
Vector3 delta = (b - a).normalized * offset;
for (int i = 0; i < count; i++) {
result[i] = a + delta * i;
Debug.Log(result[i]);
}
return result;
}
整数计数=(整数)((b-a).震级/偏移量);
Vector3[]结果=新Vector3[计数];
向量3δ=(b-a).归一化*偏移量;
for(int i=0;i
但是.magnity
和.normalized
是非常昂贵的操作,请尽量避免在Update()
中使用此操作。尽管正确,但您可能应该跳过第一次迭代(i=0),因为它只是初始位置。您在这里所做的是重新编写Lerp!哈哈,有趣的是,我从来没有使用过Lerp,只是为了平滑运动:我忘记了Lerp是线性插值,好的@Joeblow这正是Lerp。您所做的只是描述Lerp命令。A和b之间的点就是Lerp(A,b,.5f)。。。那一个是中间的。如果你想要十个步骤,它只是Lerp(a,b,.1f),Lerp(a,b,.2f),Lerp(a,b,.3f)等等。不是真的,你想要的是Lerp。MoveToward有点不同。它内置于Unity中——您可以在几乎所有其他代码行中使用它!