提问人:DiogoSaraiva 提问时间:5/13/2015 最后编辑:DiogoSaraiva 更新时间:5/14/2015 访问量:1309
Collider2D 触发器在其他游戏上对象 C# Unity3D 不起作用
Collider2D trigger on a different gameObject C# Unity3D not working
问:
在 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
我想要的条件:
- A 由 B、C 和 D 触发
- 当 B 触发器在 A 脚本 (Player.cs) 中执行时:
health -= laser.GetDamage();
- 当 C 触发器在 A 脚本 (Player.cs) 中执行时:
health = health + 10;
- 当 D 触发器在 A 脚本 (Player.cs) 中执行时
isDualCannon = true
答:
1赞
Chanisco Tromp
5/13/2015
#1
首先,您需要:
打开“是触发器”
确保碰撞体位于 gameObject 的边界内(编辑碰撞体并拖动直到绿线位于角落)
如果错误仍然包含对答案的评论,我会看看我能做些什么
它适用于我的:
这家伙会打 这家伙 使用此代码:
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
等等,你在这里的问题到底是什么?
评论