当玩家在靠近物体时击中某个键时,我需要在每个预制件上设置一个触发器。我还需要在预制件和播放器的每个实例之间发生碰撞。当触发"触发时,我似乎只能找到一个工作。在预制件上选择。处理这个问题的正确方法是什么?
答案 0 :(得分:1)
您可以在玩家关闭时使用对象上的界面并点击某个键。碰撞可以由物体对撞机处理,是否有特定的原因需要它作为触发器?检查this,可能会清除一些isTrigger问题。
答案 1 :(得分:1)
不使用对象上的触发器,而是使用 触发事件: 方法1: 方法2: Physics.OverlapSphere
在播放器按下键时查找范围内的所有对象,然后在对象的脚本中执行函数。 / p>
void Update() {
if (Input.GetKeyDown("space"))
{
ApplyEffect(transform.position, RADIUS);
}
}
RADIUS
是与播放器的理想距离
void ApplyEffect(Vector3 center, float radius)
{
Collider[] hitColliders = Physics.OverlapSphere(center, radius);
int i = 0;
while (i < hitColliders.Length)
{
hitColliders[i].gameObject.GetComponent<SCRIPT_NAME>().EFFECT_FUNCTION();
i++;
}
}
SCRIPT_NAME
是目标对象上脚本的名称。
EFFECT_FUNCTION
是脚本中函数的名称。
使用消息传递系统在对象上执行类似于文档示例中显示的功能的功能:
https://docs.unity3d.com/ScriptReference/Physics.OverlapSphere.html