启用,当玩家靠近&时禁用树网格碰撞器;远离树木

本文关键字:碰撞 网格 树网 远离 玩家 靠近 amp 启用 | 更新日期: 2023-09-27 18:05:10

我制作了一个森林场景,基本上它充满了树木(树木密度= max),但是树木可以很容易地穿过。所以我为每棵树添加了网格碰撞器,当我按下播放键时,游戏变得非常慢,fps小于10。

Unity是否有办法禁用距离玩家10个单位(半球半径)的树木网格碰撞器,并在玩家靠近时启用它?

C#UnityScript在需要脚本时是可以接受的。

启用,当玩家靠近&时禁用树网格碰撞器;远离树木

永远不要在Unity中使用MeshCollider。而是使用CapsuleColliderBoxCollider。对于你的问题,如果你只是想让树不被走过,我建议使用距离,像这样:

if(Vector3.Distance(person.position,Tree.position) < (Tree.radius + person.radius)) {
    //can't pass
}

我相信它会比collider更快

是的,你可以这样做,首先你必须通过vector3找到玩家和树木之间的距离。距离检查统一文档vector3。当你的玩家靠近树时,你就可以根据游戏对象找到树。查找并启用和禁用游戏对象,如:

public class EnableComponents : MonoBehaviour
{
    private Light myLight;

    void Start ()
    {
        myLight = GetComponent<Light>();
    }

    void Update ()
    {
        if(Input.GetKeyUp(KeyCode.Space))
        {
            myLight.enabled = !myLight.enabled;
        }
    }
}

最简单的方法是添加CapsuleCollider而不是MeshCollider。这将在很大程度上提高你的fps。否则,你将不得不手动维护所有渲染器或碰撞器的列表,并根据你的需求打开和关闭它们。