EMPURRANDO OBJETOS

Se você jogou "Half-Life", ou outros jogos semelhantes, deve ter se deparado com a situação do vídeo:

Antes de "jogar" nossa demo (que está aí em baixo) leia a lição...

Nós já vimos o uso do "OnTriggerEnter" num objeto para checar sua colisão com outro. Mas, para checar a colisão do avatar (que tem "CharacterController") com um objeto, o mais recomendado é o uso de:

function OnControllerColliderHit (hit : ControllerColliderHit)
no avatar.

Capturando o "hit", podemos trabalhar com hit.gameObject para saber com quem houve a colisão etc.

Um dos "problemas" do CharacterController é que o avatar com ele não "empurra" objetos. Mas podemos resover isso com o script abaiso, acoplado no avatar:

var grandezaEmpurro : float = 2.0;
function OnControllerColliderHit (hit : ControllerColliderHit) {
 var bodyEmpurrado : Rigidbody = hit.collider.attachedRigidbody;

// como só queremos empurrar quem tem rigidbody
 if (bodyEmpurrado == null || bodyEmpurrado.isKinematic)
 return;

//  como não queremos empurrar para baixo
 if (hit.moveDirection.y < -0.3) 
 return;

// A direção do empurro vai ser na horizontal
var direcaoEmpurro : Vector3 = Vector3 (hit.moveDirection.x, 0, hit.moveDirection.z);

// Aplicamos o empurro como uma velocidade dada ao rigidbody do objeto
bodyEmpurrado.velocity = direcaoEmpurro * grandezaEmpurro;
}

Agora brinque com nossa demo:




ANTERIOR PRÓXIMA
ÍNDICE HOME PAGE