2014-11-28 3 views
2

Я написал этот скрипт, чтобы уменьшить жизнь игроков и вернуть их обратно к исходному пункту при контакте с определенными объектами, но я обнаружил, что он вызовет от 1 до 4 раз за столкновение взяв жизни от 3 до -1.OnControllerColliderHit вызывает много раз

using UnityEngine; 
using System.Collections; 

public class HitCar : MonoBehaviour 
{ 
    public static int lives = 3; 

    void OnControllerColliderHit(ControllerColliderHit col) 
    { 
     if(col.gameObject.name == "utd_car1") 
     { 
      Destroy(col.gameObject); 
      lives--; 
      if(lives <= 0) 
      { 
       Application.LoadLevel("LoseScreen"); 
      } 
      else 
      { 
       var player = GameObject.Find("3rd Person Controller"); 
       player.transform.position = new Vector3(0, 2, -26); 
      } 
     } 
    } 

    void OnLevelWasLoaded(int level) 
    { 
     lives = 3; 
    } 
} 

Любой способ предотвратить его срабатывание более одного раза за столкновение будет очень признателен.

ответ

1

OnControllerColliderHit Используется, когда вы хотите что-то ударить несколько раз, желательно переместить его.

Вы можете переключиться на этот код:

void OnCollisionEnter(Collision col) 
{ 
    if(col.gameObject.name == "utd_car1") 
    { 
    } 
} 
+0

По некоторым причинам я не могу получить, что функция для запуска, поэтому я пошел с OnControllerColliderHit первоначально. Однако, спасибо. – fenriskiba

+0

@fenriskiba Взгляните на картинку, которую я разместил на этом ответе: http://stackoverflow.com/questions/27009055/is-there-a-way-two-make-two-trigger-gameobjects-collide/27010330#27010330 это таблица, которая научит вас, как заставить вещи сталкиваться друг с другом. – FunctionR

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