当玩家在靠近物体时碰到某个键时,我需要在每个预制件上触发一个触发器。我还需要在预制件和播放器的每个实例之间进行碰撞。在预制件上选择“正在触发”时,我似乎只能找到一个工作。处理这个问题的正确方法是什么?需要在同一预制件上发生碰撞和触发
0
A
回答
1
而不是在对象上使用触发器,使用Physics.OverlapSphere
可以找到范围为的所有对象,当玩家按下键,然后在对象的脚本中执行一个函数。
触发事件:
void Update() {
if (Input.GetKeyDown("space"))
{
ApplyEffect(transform.position, RADIUS);
}
}
RADIUS
是所期望的接近玩家
方法1:
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
是脚本中函数的名称。
方法2:
使用通讯系统上类似于在文档示例中示出的功能的对象执行功能:该第一[如何的应答( https://docs.unity3d.com/ScriptReference/Physics.OverlapSphere.html
1
当玩家靠近并击中某个键时,您可以在物体上使用界面。碰撞可以由对象碰撞器处理,是否有一个特定的原因需要成为触发器?检查this出来,可能会清除一些isTrigger问题。
相关问题
- 1. 碰撞触发动画
- 2. 碰撞发生时,从nsuserdefaults
- 3. 简单的碰撞检测在cocos2d box2d..nothing发生在碰撞
- 4. 碰撞触发器似乎总是碰撞
- 5. Box2D |禁用动态物体碰撞,同时仍然触发ContactListener碰撞
- 6. 随机数发生器碰撞测试中碰撞太多
- 7. [物理] [2D] [碰撞]发生碰撞后应该怎么办
- 8. 检测到libgdx传感器发生碰撞,但条件代码未被触发
- 9. 发生碰撞时移除物体
- 10. 哈希集如何发生碰撞?
- 11. HttpRequest.GetHashCode()实现 - 碰撞发生的频率?
- 12. 如何使HTML5 Canvas发生碰撞?
- 13. 如果发生碰撞请求Box2d
- 14. 我的节点没有发生碰撞
- 15. XNA - 碰撞永远不会发生
- 16. 随机数发生器碰撞
- 17. 当很多精灵发生碰撞时发生修复错误
- 18. 碰撞检测只发生在屏幕上方
- 19. 一个碰撞需要多少个样本(生日悖论)
- 20. 在swift 3 sprite套件中发生碰撞Xcode 8
- 21. oracle触发器摧毁命令(碰撞和deadclock)
- 22. 偶发性碰撞检测
- 23. ThreeJS与PhysiJS物理引擎没有触发碰撞事件
- 24. Java控制台同时记录到无需碰撞的线上
- 25. 如何在输入另一个碰撞器的触发器时禁用碰撞器?
- 26. 如何在玩家碰撞地面时停止触发动画?
- 27. 我需要碰撞,使一个对象坐在另一个AndEngine
- 28. Unity3D碰撞需求
- 29. Ai在发生碰撞时始终在旋转
- 30. mootools和script.js在同一页面上的碰撞
请参阅HTTPS ://sackoverflow.com/help/how-to-answer) 这个问题已经回答了,显然,你可以在这里添加你的答案。但是在回答之前你需要了解一些观点。首先,不要添加之前添加了相同代码或建议的答案。其次,如果用户非常具体地询问了问题以及他需要解决什么问题,请不要添加过于复杂的答案。第三,如果您想就回答或问题提出任何建议,您可以添加评论。 –