
jogue a versao atual ! tankdrop-20090929
link que salvou a noite ![]()
unity3d.com/support/documentation/ScriptReference/index.html
Varias novidades exploradas nesta versao
- disparo de tiro
- criacao de cena de menu princial
- carga de objeto no formato 3ds
- camera de ladinho
- Uso de fontes TTF
vamos falar primeiro do disparo do tiro. A ideia inicial era de calcular para que direçao o tanque esta apontando e criar um novo objeto com um rigid body e em alta velocidade na mesma direcao do tanque. Era uma boa intencao mas as contas de determinar para que direcao ficaram um pouco chatinhas, dai tive a ideia de criar um subobjeto do tanque, que eh um quadradinho na posicao onde quero que saia o tiro e adicionei um script a este cubinho, algo assim
var speed = 150.0;
function FireRocket () {
var bullet = GameObject.CreatePrimitive(PrimitiveType.Sphere);
bullet.AddComponent(Rigidbody);
bullet.transform.position = transform.position;
bullet.transform.rotation= transform.rotation;
//bullet.transform.localScale= transform.localScale;
bullet.rigidbody.velocity = transform.forward * speed * -1;
bullet.rigidbody.mass = 3;
}
function Update () {
if (Input.GetButtonDown("Fire1")) {
FireRocket();
}
}
um detalhe importante que demorei para acertar eh a rotacao do quadradinho de origem do tiro, acabei verificando que rotacionando Y em 270 fica na posicao certa do tiro. e Se for necessario redimensionar o projetil para o tamanho do quadrado por exemplo, basta descomentar o trecho “bullet.transform.localScale= transform.localScale;” que vai reproduzir a mesma escala aplicada ao quadrado para o projetil.
a massa do projetil eh interessante se vc deseja que o tiro vah arrastando coisas com controle fisico pelo caminho, faltou adicionar um som e umas particulas de fumaca na hora do tiro mas jah jah coloco isto
A novela do menu principal
para mim o mais dificil foi alinhar a camera com o cubo que resolvi colocar como fundo da tela principal, mas depois me manquei que bastava colocar todo mundo na origem, cubo e camera, e depois ir afastando a camera aos pouquinhos. Nem sei ainda se esta eh a melhor maneira, mas funcionou
O efeito de fazer o texto cair, fiz com a criacao de duas caixas, sendo a de cima com rigidbody e suspensa no ar, logo quando inicia a cena a caixa cai, criei um GUI Text como subobjeto da caixa que cai e pronto o texto cai acompanhando a caixa, e para que as caixas em questao nao tivessem nenhum tipo de rederizacao removi o componente Mesh Renderer de cada um.
e para realizar a transicao para a proxima cena, usei o seguinte script que anexei no GuiText “Play”
function Update () {
if (Input.GetButtonDown("Fire1")) {
Application.LoadLevel (1);
}
}
Observe que o numero do level fica determinado na tela de configuracao do build “File / Build Settings”, e lembre-se de nunca ficar mexendo as cenas pelos diretorios
fiz isto e deu uma baguncada boa nos build settings hehehe.
carga de objeto no formato 3ds
Foi muito sem graça hehehe baixei o arquivo do www.turbosquid.com/ (fica atento que se na hora da busca ordenar pelo menor preco tem varios modelos de graça) descompactei e arrastei sobre o projeto, e arrastei sobre a cena, mudei a escala e pronto todos felizes com o RV2 tank como subobjeto do meu “char”
camera de ladinho
A camera smooth follow nao servia para o que eu queria, o que eu precisava eh uma camera que acompanhasse o tanque mas q quando ele rodasse nao rodasse junto, ou seja uma smotth follow sem rotation
dei uma canibalizada na smotth follow e sobrou isto aqui
var target : Transform;
var distance = 10.0;
var height = 5.0;
// Place the script in the Camera-Control group in the component menu
@script AddComponentMenu("Camera-Control/Smooth Follow - no rotation")
function LateUpdate () {
if (!target) return;
wantedHeight = target.position.y + height;
currentHeight = transform.position.y;
currentHeight = Mathf.Lerp (currentHeight, wantedHeight, Time.deltaTime);
transform.position = target.position;
transform.position -= Vector3.forward * distance;
transform.position.y = currentHeight;
transform.LookAt (target);
}
O Legal das fontes eh lembrar de criar um objeto de fonte para cada tamanho que sera usado, tirando este detalhe eh bem transparente o uso facim facim, arrasta o arquivo da fonte para o projeto e pimba troca o tamanho e da apply que o unity gera a imagem da fonte no tamanho que eh necessario.