Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos I / Aula
A última plataforma da qual precisamos, para finalizar o nosso cenário, é a plataforma que cai ao fazer contato com o usuário. Ela é bem comum em jogos diversos do estilo, e a utilizaremos como desafio final para a nossa fase, uma vez que ela será o último obstáculo entre o jogador e o objetivo final.
Criaremos a plataforma da mesma maneira como criamos as outras, como filha de Platforms. Passarei os valores novamente! Nome, FallingPlat. Layer, Ground. Color RGB (200, 0, 0) ou Hex #C80000FF. Order in Layer 1. Adicionar Box Collider 2D. Escala (7,1,1).
Além disso, adicionaremos a ela um Rigidbody 2D do tipo Static! É muito importante fazer essa alteração, pois é através dessa propriedade que faremos a plataforma cair e voltar. Por fim, como você deve imaginar, adicionaremos a ela um script C#. Chamaremos o script de FallingPlatController. Vamos diretamente ao código desse script, podendo tal código ser visto na Listagem 7. Discutiremos na sequência!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FallingPlatController : MonoBehaviour {
public float fallTime = 1f;
public float respawnTime = 8f;
private Rigidbody2D rb;
private Vector3 pos;
// Use this for initialization
void Start () {
rb = GetComponent<Rigidbody2D> ();
pos = transform.position;
}
// Update is called once per frame
void Update () {
}
void OnCollisionEnter2D (Collision2D col) {
if (col.gameObject.CompareTag("Player")) {
Invoke ("PlatFall", fallTime);
}
}
void PlatFall() {
rb.bodyType = RigidbodyType2D.Dynamic;
Invoke ("Respawn", respawnTime);
}
void Respawn() {
rb.bodyType = RigidbodyType2D.Static;
transform.position = pos;
}
}
O aspecto mais importante desse script é o método Invoke. Esse método serve para chamar, por meio de um atraso definido, um outro método. O Invoke é utilizado duas vezes nesse script - a primeira, para invocar a queda da plataforma, através do método PlatFall, usando um atraso de fallTime. A segunda, por sua vez, para retornar a plataforma à posição inicial após respawnTime segundos, utilizando o método Respawn.
O método PlatFall altera o tipo do RigidBody2D para Dynamic, fazendo-o sofrer a ação da gravidade e cair! Ao retornar a plataforma à sua posição original, utilizando o método Respawn, retornamos o RigidBody2D ao tipo Static, de modo que ele não sofra qualquer tipo de força. Simples, não? Mas bem eficaz! Adicionado esse script e alteradas as propriedades, podemos criar o Prefab e replicá-lo para a nossa cena. As posições podem ser vistas na Tabela 2.
Elemento | Posição |
FallingPlat | (170, -2, 0) |
FallingPlat | (185, 0, 0) |
FallingPlat | (200, 2, 0) |
FallingPlat | (215, 4, 0) |
Vejamos o resultado do posicionamento e da configuração das plataformas na Figura 17.
E, com isso, concluímos a criação de nosso cenário. Falta apenas o objetivo final! Qual será? Clique aqui para baixar e descobrir! Vamos, agora, posicioná-lo em nossa cena.
Versão 5.3 - Todos os Direitos reservados