2016-09-27 3 views
0

I m кодирует 2d-платформенную игру. В игре есть союзники, а враги идут друг к другу. Если они сталкиваются друг с другом, их собственный скрипт таймера начинает обратный отсчет, а здоровье уменьшается на время как периоды. Если состояние символов равно нулю, я уничтожаю этот игровой объект. Я добавляю несколько булевых символов для каждого символа, чтобы обнаружить, что они сталкиваются друг с другом или нет. При столкновении обоих игровых объектов, если один уничтожает, другой сталкивающийся игровой объект все еще продолжает континуум, хотя нет встречного объекта. Это происходит только при уничтожении другого сталкивающегося объекта.Unity 2D столкновение не останавливается, если другой игровой объект уничтожает

public float setSpeed; 
public bool enemyColliding; 

float speed; 

void Start() { 

} 

// Update is called once per frame 
void Update() { 
    speed= setSpeed; 
    GetComponent<Rigidbody2D>().velocity = new Vector2 (speed,GetComponent<Rigidbody2D>().velocity.y); 
    if (enemyColliding) { 
     attackAnimation(); 
    } 
    else 
    { 
     walkAnimation(); 
    } 
} 

void OnTriggerEnter2D(Collider2D coll) 
{ 
    if (coll.gameObject.tag == "dusman" /*enemy*/) { 
     enemyColliding= true; 
    } 

} 
void OnTriggerExit2D(Collider2D coll) 
{ 
    if (coll.gameObject.tag=="dusman" /*enemy*/) { 
     enemyColliding= false; 
    } 
} 
void attackAnimation() 
{ 
    Animator animator = this.gameObject.GetComponent<Animator>(); 
    animator.runtimeAnimatorController = Resources.Load ("AllyWr2AttackAnim") as RuntimeAnimatorController; 
} 
void walkAnimation() 
{ 
    Animator animator = this.gameObject.GetComponent<Animator>(); 
    animator.runtimeAnimatorController = Resources.Load ("AllyWr2WalkAnim") as RuntimeAnimatorController; 
} 

Любая помощь, пожалуйста ...

ответ

1
void OnTriggerExit2D(Collider2D coll) 
{ 
    enemyColliding= false; 
} 

попробовать это

+0

Спасибо за ответ. Существует более одного разных игровых объектов. он обнаруживает других, если я это делаю. –

+0

Если я прав, когда вы удаляете игровой объект с помощью hp <0, они все еще сталкиваются, а OnTriggerExit2D не вызывается. Это вызов после удаления и слияния в OnTriggerExit2D должен быть нулевым. Проверь это. если это правда, вы можете использовать его в выражении if –

+0

другим способом является изменение положения игрового объекта вне игрового поля, а затем его удаление. hack) –

Смежные вопросы