A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Unity 3D Character Controller e Triggers

Apresentações semelhantes


Apresentação em tema: "Unity 3D Character Controller e Triggers"— Transcrição da apresentação:

1 Unity 3D Character Controller e Triggers

2 Unity Colisões Objetos Collider : formato da colisão
Estáticos (static collider) Dinâmicos : componentes adicionais RigidBody : movimento e comportamento físico (realístico) Character Controller : Componnte especial para players Detecção de colisões geral Controle mais direto (física = simulação automática)

3 Unity Character Controller
Personagens em geral controlados por animações e ações, sem necessariamente um comportamento realístico (total) Utiliza-se Character Controller Maior controle geral (estável em colisões) Transformações baseadas principalmente em script Quando personagem planejado para ter física real: Utiliza-se RigidBody Comportamento imprevisível (realístico) Transformações automáticas baseadas em colisões

4 Unity Character Controller Adiciona-se por:
Component->Physics->Character Controller Sobrepõe o Collider anterior do objeto Pode ser utilizado com RigidBody, mas sua utilização é alternativa (à física realística) Character controller: comandos específicos para controle / movimento

5 Unity Character Controller Altura Raio Slope Limit Step Offset
Limite para subida em rampas (graus) Step Offset Altura subida degraus Skin Width Valores maiores para evitar colisões próximas (grudar = stuck)

6 Unity Acessar o componente Character Controller não pode ser diretamente Precisa localizar o componente com: var ponteiro = GetComponent(CharacterControler) GetComponent pode ser usado para acessar qualquer componente do Objeto Chamar pelo nome, sem espaços, sem aspas

7 Unity Character Controller : função Move Código básico para movimento:
var velocidade = 15; var forca : Vector3; function Update () { //CAPTURA INPUT BASICO forca.x = Input.GetAxis("Horizontal"); forca.y = 0; forca.z = Input.GetAxis("Vertical"); forca *= velocidade; forca *= Time.deltaTime; var controller = GetComponent(CharacterController); controller.Move(forca); }

8 Unity Não usa gravidade direta Tem Flags auxiliares
Setadas com o movimento isGrounded = no chão CollisionFlags = detalhes da colisão None Sides Above Below

9 Unity Criando gravidade manualmente
Basicamente aplicar força y (gravidade) var gravidade = 20; Function Update() { //CAPTURA INPUT BASICO forca.x = Input.GetAxis("Horizontal"); //forca.y = 0; forca.z = Input.GetAxis("Vertical"); forca *= velocidade; //APLICANDO GRAVIDADE SEMPRE forca.y -= gravidade; forca *= Time.deltaTime; ....

10 Unity Criando pulo básico – força y (por tecla)
Basicamente aplicar força y (pulo) Gravidade devolve ela a zero (ao solo) Adicionalmente – só pular se no chão (isGrounded) var forca_pulo = 20; var no_chao = 0; .... (antes do controller.Move) if (Input.GetKeyDown("space") && no_chao == 1) { forca.y = forca_pulo; } ... (FLAG atualizada após o Move) if (controller.isGrounded) { no_chao = 1;

11 Unity Tratando colisões manualmente
Colisões disparam mensagens para os objetos envolvidos Colisões em geral (Colliders): OnCollisionEnter OnCollisionStay OnCollisionExit Colisões Character Controller : ESPECIAL OnControllerColliderHit Objeto que colidiu também é passado na mensagem (ponteiro)

12 Unity Character Controller : Colisão básica
Recebe um ControllerColliderHit Possível acessar propriedades do objeto colidido Mensagem OnControllerColliderHit Exemplo: retornar o nome do objeto colidido em um Guitext function OnControllerColliderHit (quem : ControllerColliderHit ) { debug = GameObject.Find("Debug1"); debug.guiText.text = "Colisao: "; debug.guiText.text += quem.gameObject.name; }

13 Unity RigidBody e Colliders normais Recebe um Collider
Possível acessar propriedades do objeto colidido Mensagens OnCollisionEnter Observar: Character Controller uso diferenciado function OnCollisionEnter (quem : Collider ) { debug = GameObject.Find("Debug1"); debug.guiText.text = "Colisao: "; debug.guiText.text += quem.gameObject.name; }

14 Unity Trigger = Gatilhos Colisões especiais – objetos de marcação
Não esperada colisão com reação diretamente Colisão para ativação ou informação Objeto basicamente passável (mas detecta a colisão) Uso: Bônus e itens indicar entrada em parte do cenário, etc Mensagens Específicas OnTriggerEnter OnTriggerStay OnTriggerExit

15 Unity Trigger : Exemplo Colisão
function OnTriggerEnter (quem : Collider ) { debug = GameObject.Find("Debug1"); debug.guiText.text = "Colisao TRIGGER: "; debug.guiText.text += quem.gameObject.name; //Remove item que colidiu Destroy(quem.gameObject); }


Carregar ppt "Unity 3D Character Controller e Triggers"

Apresentações semelhantes


Anúncios Google