Collider2D触发不同的gameObject C#Unity3D无法正常工作

时间:2015-05-13 11:24:03

标签: c# unity3d

在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"没有出现在控制台中。

在玩家游戏对象"触发"检查并且我的powerUp(DualCannon_PU)"是触发器"未经检查。

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


我想要的一个例子:

我有4个游戏对象并且都有2D碰撞器

  • A。玩家发货("触发"已开启)
  • B。 Enemy projectiles
  • C。 Health PowerUp
  • D。 Dual Cannon PowerUp

我想要的条件:

  1. A由B,C和D
  2. 触发
  3. 当B在A脚本(Player.cs)中使用A触发时执行:health -= laser.GetDamage();
  4. 当C脚本中的A触发器(Player.cs)执行时:health = health + 10;
  5. 当D在A脚本(Player.cs)中用A触发时,执行isDualCannon = true

1 个答案:

答案 0 :(得分:1)

首先你需要:

点击“Is触发器”

确保你的碰撞器位于gameObject的边界(编辑碰撞并拖动,直到绿线在角落里)

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

它与我的工作正常:

The Block that hits

enter image description here

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

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