当玩家在靠近物体时碰到某个键时,我需要在每个预制件上触发一个触发器。我还需要在预制件和播放器的每个实例之间进行碰撞。在预制件上选择“正在触发”时,我似乎只能找到一个工作。处理这个问题的正确方法是什么?需要在同一预制件上发生碰撞和触发
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. Unity Destroy(gameObject)杀死多个碰撞体上的父对象和碰撞触发
- 4. 简单的碰撞检测在cocos2d box2d..nothing发生在碰撞
- 5. 碰撞触发器似乎总是碰撞
- 6. Box2D |禁用动态物体碰撞,同时仍然触发ContactListener碰撞
- 7. Enchant.js在removeChild后发生碰撞检测
- 8. Sprite Kit碰撞 - 在发生碰撞的实例上执行实例方法
- 9. 在另一个对象上滑动时发生碰撞
- 10. 带有SFML对象的Box2D在碰撞后发生椭圆和相互碰撞
- 11. 随机数发生器碰撞测试中碰撞太多
- 12. [物理] [2D] [碰撞]发生碰撞后应该怎么办
- 13. 检测到libgdx传感器发生碰撞,但条件代码未被触发
- 14. 如果发生碰撞请求Box2d
- 15. 为什么碰撞发生很多次?
- 16. 如何使HTML5 Canvas发生碰撞?
- 17. 随机数发生器碰撞
- 18. HttpRequest.GetHashCode()实现 - 碰撞发生的频率?
- 19. 哈希集如何发生碰撞?
- 20. 我的节点没有发生碰撞
- 21. 发生碰撞时移除物体
- 22. XNA - 碰撞永远不会发生
- 23. 如何改变发生碰撞时
- 24. 当很多精灵发生碰撞时发生修复错误
- 25. 当视图边界发生变化时发生碰撞
- 26. 碰撞检测只发生在屏幕上方
- 27. 在xcode上发生碰撞后删除图像
- 28. 一个碰撞需要多少个样本(生日悖论)
- 29. C#:我怎么知道碰撞发生在哪一边?
- 30. 在swift 3 sprite套件中发生碰撞Xcode 8
请参阅HTTPS ://sackoverflow.com/help/how-to-answer) 这个问题已经回答了,显然,你可以在这里添加你的答案。但是在回答之前你需要了解一些观点。首先,不要添加之前添加了相同代码或建议的答案。其次,如果用户非常具体地询问了问题以及他需要解决什么问题,请不要添加过于复杂的答案。第三,如果您想就回答或问题提出任何建议,您可以添加评论。 –