unity2D:让敌人在向下移动时忽略 OnTriggerEnter2D
unity2D: Make enemies ignore OnTriggerEnter2D when they are traveling down
我有两个脚本,一个附加到游戏对象,另一个附加到随时间实例化的敌人预制件。附加到游戏对象的脚本使用 OnTriggerEnter2D 来检测敌人何时进入,然后该对象的生命值减一。它有效,现在唯一的问题是,由于敌人出现然后又走回去,敌人不止一次与物体碰撞,这不是我想要的。
我已经尝试过使用布尔值来阻止它多次碰撞,但其他预制件敌人无法与游戏对象发生碰撞,因为布尔值被设置为 true 而不是被设置回 false。我不想使用 yield wait for seconds 因为敌人确实会经常生成所以它看起来并不正常;我也试过 onTriggerExit2D 但如果我尝试那个方法你就会明白了。是否有任何其他方法来检测敌人是否已经进入对象对撞机一次损坏对象但是当敌人回来时他忽略了碰撞(没有关闭敌人或游戏对象的对撞机)也就是所有实例化的敌人都能够碰撞当它们上升时与游戏对象一起使用,但当它们返回时不与游戏对象一起使用。
最好的办法是简单地对怪物做一个 bool 检查,看它们是否向北移动。有几种方法可以解决这个问题。如果你知道他们要去哪里,你可以简单地比较他们要去的地方和他们所在的地方,并比较 y 向量值。所以像这样:
public bool monsterNorthChecker(){
if(monsterDestination.y > currentLocation.y){
return true;
}
else{
return false;
}
}
然后您可以简单地调用该函数 OnTriggerEnter 并验证怪物是否向北移动,如果是,则带走他的生命值。如果您不知道他的目的地,您可能不得不求助于更乏味的方法来确定目的地方向。比如将上一帧的 vector2 的 y 值与这一帧进行比较,看看他移动的方向。
我有两个脚本,一个附加到游戏对象,另一个附加到随时间实例化的敌人预制件。附加到游戏对象的脚本使用 OnTriggerEnter2D 来检测敌人何时进入,然后该对象的生命值减一。它有效,现在唯一的问题是,由于敌人出现然后又走回去,敌人不止一次与物体碰撞,这不是我想要的。
我已经尝试过使用布尔值来阻止它多次碰撞,但其他预制件敌人无法与游戏对象发生碰撞,因为布尔值被设置为 true 而不是被设置回 false。我不想使用 yield wait for seconds 因为敌人确实会经常生成所以它看起来并不正常;我也试过 onTriggerExit2D 但如果我尝试那个方法你就会明白了。是否有任何其他方法来检测敌人是否已经进入对象对撞机一次损坏对象但是当敌人回来时他忽略了碰撞(没有关闭敌人或游戏对象的对撞机)也就是所有实例化的敌人都能够碰撞当它们上升时与游戏对象一起使用,但当它们返回时不与游戏对象一起使用。
最好的办法是简单地对怪物做一个 bool 检查,看它们是否向北移动。有几种方法可以解决这个问题。如果你知道他们要去哪里,你可以简单地比较他们要去的地方和他们所在的地方,并比较 y 向量值。所以像这样:
public bool monsterNorthChecker(){
if(monsterDestination.y > currentLocation.y){
return true;
}
else{
return false;
}
}
然后您可以简单地调用该函数 OnTriggerEnter 并验证怪物是否向北移动,如果是,则带走他的生命值。如果您不知道他的目的地,您可能不得不求助于更乏味的方法来确定目的地方向。比如将上一帧的 vector2 的 y 值与这一帧进行比较,看看他移动的方向。