Collider2D 触发器在其他游戏上对象 C# Unity3D 不起作用

Collider2D trigger on a different gameObject C# Unity3D not working

提问人:DiogoSaraiva 提问时间:5/13/2015 最后编辑:DiogoSaraiva 更新时间:5/14/2015 访问量:1309

问:

在 Unity 中,我的代码如何检测触发器何时与特定的不同对象一起发生?

我已经尝试了几件事,例如:

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {

    public GameObject DualCannon_PU;

    void OnTriggerEnter2D (Collider2D coll) {
        if (coll.name == "DualCannon_PU") {
            Debug.Log ("DualCannon PowerUp");
        }
    }
}

但它不起作用:它不会触发任何东西,并且“DualCannon PowerUp”不会出现在控制台中。

在播放器中,gameObject “is trigger” 被选中,而我的 powerUp (DualCannon_PU) “is trigger” 没有被选中。

我注意到我有 2 个“播放器控制器(脚本)”,我删除了第一个,但问题仍然存在......


我想要的一个例子:

我有 4 个游戏对象,它们都有 2D 碰撞器

  • 一个。玩家飞船(“触发器”已打开)
  • 湾。敌方射弹
  • 三.健康道具
  • D.双加农炮 PowerUp

我想要的条件:

  1. A 由 B、C 和 D 触发
  2. 当 B 触发器在 A 脚本 (Player.cs) 中执行时:health -= laser.GetDamage();
  3. 当 C 触发器在 A 脚本 (Player.cs) 中执行时:health = health + 10;
  4. 当 D 触发器在 A 脚本 (Player.cs) 中执行时isDualCannon = true
C# Unity-游戏引擎

评论

3赞 Soner Gönül 5/13/2015
你说的不工作是什么意思?更具体地说明您的问题。
0赞 Max Yankov 5/13/2015
“是触发器”和“是撞机”是什么意思?你有什么确切的游戏对象,它们有什么组件(刚体和碰撞器,你的脚本),它们的设置是什么?(刚体是动力学的吗?对撞机是否设置为触发器?
0赞 DiogoSaraiva 5/13/2015
@MaxYankov 再次更新了我的问题。感谢您的耐心等待
0赞 Max Yankov 5/13/2015
奇怪,它看起来是正确的。您是否检查过物理设置中的哪些图层与哪些图层发生碰撞?
0赞 DiogoSaraiva 5/13/2015
@MaxYankov是的,我检查了:(

答:

1赞 Chanisco Tromp 5/13/2015 #1

首先,您需要:

打开“是触发器”

确保碰撞体位于 gameObject 的边界内(编辑碰撞体并拖动直到绿线位于角落)

如果错误仍然包含对答案的评论,我会看看我能做些什么

它适用于我的:

The Block that hits

enter image description here

这家伙会打 这家伙 使用此代码:

void OnTriggerEnter2D(Collider2D col){
        Debug.Log ("notset = " + col.name);
    }

评论

0赞 DiogoSaraiva 5/13/2015
正如您在屏幕截图中看到的那样,“is trigger”已打开,我的多边形碰撞体是正确的。
0赞 DiogoSaraiva 5/13/2015
这是行不通的,因为它可以用另一个对象触发......并且不应与该上下文中的其他对象一起触发。
1赞 Chanisco Tromp 5/13/2015
等等,你在这里的问题到底是什么?