我目前正在使用Vector3.Lerp
. 这是有效的,但是它也在对象之间产生了一些间隙。如果起点和终点之间的距离不足以插入一个新对象,就会发生这种情况,但它足够大以至于它们可以滑动一点。他们需要端到端运行,直接相互对接。
代码是:
Vector3 startPosition= blah.transform.position.
Vector3 endPosition = getCurrentMousePosition();
Vector3 size = ObjectToSpawn.GetComponent<Renderer>().bounds.size;
fillCount = Mathf.RoundToInt(Vector3.Distance(startPosition, endPosition) / size.z);
float distance = 1.0f / fillCount;
float lerpValue = 0;
for (int i = 0; i < fillCount; i++)
{
lerpValue += distance;
nextPosition = Vector3.Lerp(startPosition, endPosition, lerpValue);
Instantiate(ObjectToSpawn, nextPosition, Quaternion.identify);
}
我的一部分认为,仅仅根据对象的大小/距离尝试连续实例化对象可能是值得的,但我似乎也不能完全正确。虽然这个系统被用于其他用途,我宁愿不重写全新的代码,如果可以稍微修改一下就可以了。我猜四舍五入 Lerp 值将是可行的方法,可能吗?
任何意见或建议将不胜感激。