启用,当玩家靠近&时禁用树网格碰撞器;远离树木
本文关键字:碰撞 网格 树网 远离 玩家 靠近 amp 启用 | 更新日期: 2023-09-27 18:05:10
我制作了一个森林场景,基本上它充满了树木(树木密度= max),但是树木可以很容易地穿过。所以我为每棵树添加了网格碰撞器,当我按下播放键时,游戏变得非常慢,fps小于10。
Unity是否有办法禁用距离玩家10个单位(半球半径)的树木网格碰撞器,并在玩家靠近时启用它?
C#
和UnityScript
在需要脚本时是可以接受的。
永远不要在Unity中使用MeshCollider
。而是使用CapsuleCollider
或BoxCollider
。对于你的问题,如果你只是想让树不被走过,我建议使用距离,像这样:
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。否则,你将不得不手动维护所有渲染器或碰撞器的列表,并根据你的需求打开和关闭它们。