float3 worldPos = mul ((float3x4)unity_ObjectToWorld, vertex);
float distLimit = _affectDist;
for (int i = 0; i < _obstacleCount; i++)
{
float3 _obstacle = _obstacles[i];
float3 bendDir = normalize (float3(worldPos.x,0,worldPos.z) - float3(_obstacle.x,0,_obstacle.z));
float distMulti = (distLimit-min(distLimit,distance(float3(worldPos.x,0,worldPos.z),float3(_obstacle.x,0,_obstacle.z))))/distLimit;
vertex.xz += bendDir.xz * distMulti * a * a * _bendAmount;
}
本文介绍了一种在Unity中实现的障碍物躲避算法。通过计算角色与障碍物之间的距离,利用浮点数矩阵乘法变换角色位置,并根据距离限制调整偏移量,使角色能够平滑地绕过障碍物。
206

被折叠的 条评论
为什么被折叠?



