首页 > 解决方案 > 在两点之间添加多个盒子碰撞器?

问题描述

我试图在两点之间添加一个线渲染器并且有效。如何在两点之间添加多个小盒子碰撞器?假设我想在这两点之间添加 10 个小盒子碰撞器。Box collider 不应重叠,但第一个 box collider 的结束位置可以与 2nd box collider 的起始位置接触。我希望我在这里说清楚了。

我假设我必须在两点之间用盒子碰撞器实例化游戏对象,我该如何实现呢?

public GameObject PointA;
public GameObject PointB;
public GameObject GameObjPrefab;
// Start is called before the first frame update
void Start()
{
    Instantiate(GameObjPrefab, Mathf.Lerp((float)PointA, (float)PointB, 0.5f), Quaternion.identity);
}

标签: c#unity3d

解决方案


尝试

using UnityEngine;

public class CubeCreator : MonoBehaviour
{
    [SerializeField] Transform startPoint = null;
    [SerializeField] Transform endPoint = null;

    void Start()
    {
        AddCollidersBetween();
    }

    void AddCollidersBetween()
    {
        const int padding = 2;
        const int colliderCount = 10 + padding;
        const float cubeSize = 0.5f;

        const float lerpMultiplier = 1f / colliderCount;

        for (int i = 1; i < colliderCount; i++)
        {
            float lerpFactor = i * lerpMultiplier;

            GameObject cubeObject = GameObject.CreatePrimitive(PrimitiveType.Cube);
            cubeObject.name = "Cube " + i;

            Transform cube = cubeObject.transform;
            cube.position = Vector3.Lerp(
                startPoint.position, endPoint.position, lerpFactor
            );
            cube.localScale = Vector3.one * cubeSize;
            cube.LookAt(endPoint);
        }
    }

}

推荐阅读