2013-02-26 2 views
3

Я строю игру, где игрок бежит по тропинке. Когда игрок запускает коллайдер, появятся 2 объекта противника.Как отключить коллайдер при вводе триггера другого коллайдера?

Что я хочу, когда введен первый триггер коллайдера, я хочу, чтобы второй коллайдер, находящийся на некотором расстоянии от первого коллайдера, отключился в течение определенного времени. Как достичь этого?

ответ

2

Если вы хотите отключить коллайдеры, чтобы они не ударили или не отскочили от стены, например, вы можете изменить переменную «isTrigger» вашего коллайдера на true, чтобы изменить ее на триггерный тома вместо сплошной коллайдер. Это приводит к отключению его, поскольку оно не приведет к остановке или отскоку других объектов, если они ударят по нему.

Например:

function Update() { 
    if (Input.GetKeyDown(KeyCode.X)) { 
     collider.isTrigger = true; 
    } 
} 

Обратите внимание, что такие вещи, как MouseOver все еще работают.

Если вы хотите полностью отключить его, вы можете попробовать collider.enabled = false. Я не уверен, что это работает или нет. Если это не так, вы всегда можете свернуть свой коллайдер:

var myOldSize:Vector3; 

function DisableBoxCollider(myCollider:BoxCollider) 
{ 
    //actually just resizes it 
    myOldSize=myCollider.size; 
    myCollider.size=Vector3(0,0,0); 
} 

function EnableBoxCollider(myCollider:BoxCollider) 
{ 
    if(myOldSize!=Vector3(0,0,0)) 
     myCollider.size=myOldSize; 
} 

Вы можете использовать приведенный выше код, чтобы интегрировать его в свой собственный проект. Я не собираюсь выкидывать весь код для вас, потому что иначе мы пропустим учебное задание и опубликуем в Stackoverflow в целом. Но это должно помочь вам встать на путь. Попробуйте сыграть с кодом, и если у вас есть вопросы, вернитесь сюда и спросите их, предоставив вопрос некоторым кодом, чтобы показать, что вы пробовали.

+0

thanx для ответа. Здесь я ищу, чтобы запустить функцию между триггером ввода одного коллайдера и триггером выхода другого коллайдера. Является ли это возможным ?? вот функция кода OnTriggerEnter() {if (other.gameObject.tag == "player") {экземпляр (враг, transform.position, transform.rotation)}} теперь я хочу, чтобы этот экземпляр противника умер, когда игрок выходит из триггер разного коллайдера. как это достичь? – RakeshChatra

+0

Вы имеете в виду http://docs.unity3d.com/Documentation/ScriptReference/MonoBehaviour.OnTriggerEnter.html и http://docs.unity3d.com/Documentation/ScriptReference/Collider.OnTriggerExit.html? – Joetjah