我有两个脚本,一个附加到一个游戏对象,另一个附加到一个随时间实例化的敌人预制件。附加到游戏对象的脚本使用OnTriggerEnter2D来检测敌人何时进入,然后该对象的健康栏减少一个。 Iit工作,现在唯一的问题是,由于敌人上升然后向后走,敌人不止一次与物体碰撞,这不是我想要的。
我已经尝试过使用布尔来阻止它不止一次碰撞但其他预制件的敌人无法与游戏对象发生碰撞,因为布尔值设置为true而不是设置为false。我不想使用屈服等待秒,因为敌人经常产卵,所以它看起来不会正常;我也试过onTriggerExit2D,但是如果我尝试那种方法,你就会明白。有没有其他方法可以检测敌人是否已经进入物体对撞机一次性损坏物体但是当敌人倒下时他忽略了碰撞(没有关闭敌人或游戏对象的对撞机)又名所有实例化的敌人都能够碰撞游戏对象在他们上升的时候,而不是当他们回来的时候。
答案 0 :(得分:1)
你最好的选择就是对怪物进行一次布尔检查,看看它们是否向北移动。有几种方法可以解决这个问题。如果你知道它们的去向,你可以简单地比较它们的位置,并比较y向量值。所以像这样:
public bool monsterNorthChecker(){
if(monsterDestination.y > currentLocation.y){
return true;
}
else{
return false;
}
}
然后你可以简单地调用该函数OnTriggerEnter并验证怪物是否向北,如果他是,则带走他的健康。如果你不知道他的目的地,你可能不得不采用更乏味的方法来确定目的地方向。比如将最后一帧的vector2的y值与此值进行比较,看看他的移动方式。