【问题标题】:How to destroy all 2D objects that collide with a specific 2D one in Unity3D?如何销毁与 Unity3D 中特定 2D 对象碰撞的所有 2D 对象?
【发布时间】:2016-01-20 08:01:32
【问题描述】:

我正在尝试使用移动的 2D 对撞机作为“对象移除器”,方法是销毁它所碰撞的所有对象,但这样做会遇到问题。

【问题讨论】:

  • 嗨,欢迎来到 Stack Overflow。请务必包含您迄今为止尝试过的任何代码,以便我们更好地了解您的方法,并可以更轻松地编写满足您需求的答案。
  • 通常在 SO 上,人们会为特定问题提供答案——没有人愿意成为网上某些人的代码猴。不过,我可以为您提供一些提示以帮助您入门。对于初学者,我认为您的任务需要两个阶段:碰撞检测阶段和对象移除阶段。您肯定需要创建一个脚本来销毁对象,那么您是希望移除器销毁其他对象还是希望其他对象检测到与移除器的碰撞然后销毁自己?希望能帮助您入门。

标签: unity3d unityscript unity3d-2dtools


【解决方案1】:

OnTriggerEnter 的示例 in the documentation 完全符合您的要求:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
void OnTriggerEnter(Collider other) {
    Destroy(other.gameObject);
    }
}

不要忘记检查对撞机是否是触发器。该脚本应附加到游戏对象上,该对象将销毁接触它的东西。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。我正在制作 2D 游戏,因此您可能需要调整我的代码。您应该将对撞机上的“Is Trigger”设置为 false(未选中)并将 javascript 脚本附加到您的“对象移除器”并使用以下代码。

    对于 2D:

    function OnCollisionEnter2D(coll: Collision2D) {
            Destroy(coll.gameObject);
    }
    

    对于 3D:

    function OnCollisionEnter(coll: Collision) {
            Destroy(coll.gameObject);
    }
    

    我不能 100% 确定 3D 代码是否有效。

    希望这有帮助! :)

    完整答案在这里:https://stackoverflow.com/a/34862535/5792157

    【讨论】:

    • @Burga Alex 如果这有帮助,请告诉我!奇怪的是,OnTriggerEnter 对我不起作用。
    猜你喜欢
    • 2018-02-18
    • 2015-08-07
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    相关资源
    最近更新 更多