[TUTORIAL] Movimentação SQM (2D)
Página 1 de 1
[TUTORIAL] Movimentação SQM (2D)
Olá eu tinha dificuldade de fazer uma movimentação SQM, e conseguir fazer esse script.
O personagem anda em todas as direções. Para alterar a velocidade eu recomendo aumentar a velocidade das animações. Mas também pode fazer um variável speed. E realizar a seguinte atualização:
ou
depois de fazer essas alterações, provavelmente, o player não vai andar apenas um tile, mas quando tiles o speed definir, tipo speed = a 2, ele vai andar a cada 2 tiles, se não quiser, não use o speed, e faça a alteração da velocidade das animações.
O personagem anda em todas as direções. Para alterar a velocidade eu recomendo aumentar a velocidade das animações. Mas também pode fazer um variável speed. E realizar a seguinte atualização:
- Código:
transform.Translate(move * speed * Time.deltaTime);
ou
- Código:
transform.Translate(move * Time.deltaTime * speed);
depois de fazer essas alterações, provavelmente, o player não vai andar apenas um tile, mas quando tiles o speed definir, tipo speed = a 2, ele vai andar a cada 2 tiles, se não quiser, não use o speed, e faça a alteração da velocidade das animações.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
//public Player_Entity player;
public int health = 3;
public int dano;
private Transform transform;
private Vector2 move;
float time;
private Animator anim;
public float speed;
void Start()
{
anim = GetComponent<Animator>();
transform = GetComponent<Transform>();
move = new Vector2(0,0);
// GC.instance.UpdateLives(health);
}
void Update()
{
if (time > 0)
{
time -= Time.deltaTime;
transform.Translate(move * Time.deltaTime);
}
else
{
Move();
}
}
void FixedUpdate()
{
}
void Move()
{
if (Input.GetKey(KeyCode.A))
{
move.Set(-1,0);
time = 1f;
anim.SetInteger("trasaction",2);
}
else if (Input.GetKey(KeyCode.D))
{
move.Set(1,0);
time = 1;
anim.SetInteger("trasaction", 1);
//Debug.Log("foi");
}
else if (Input.GetKey(KeyCode.W))
{
move.Set(0,1);
time = 1;
anim.SetInteger("trasaction", 4);
}
else if (Input.GetKey(KeyCode.S))
{
move.Set(0,-1);
time = 1;
anim.SetInteger("trasaction", 3);
}
else if (Input.GetKey(KeyCode.E))
{
move.Set(-1, -1);
time = 1;
anim.SetInteger("trasaction", 3);
}
else if (Input.GetKey(KeyCode.Q))
{
move.Set(1,1);
time = 1;
anim.SetInteger("trasaction", 4);
}
else if (Input.GetKey(KeyCode.C))
{
move.Set(1,-1);
time = 1;
anim.SetInteger("trasaction", 3);
}
else if (Input.GetKey(KeyCode.Z))
{
move.Set(-1, 1);
time = 1;
anim.SetInteger("trasaction", 4);
}
else
{
anim.SetInteger("trasaction", 0);
}
}
public void Demege()
{
health -= dano;
if(health <= 0)
{
// chamar game over
}
}
/* public void IncreaseLife(int value)
{
health += value;
GC.instance.UpdateLives(health);
}
*/
}
edsonvinicius76- Iniciante
- PONTOS : 1149
REPUTAÇÃO : 4
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Tutorial Unity 3D Movimentação de Personagem com Botões UI
» [TUTORIAL] Como spawnar inimigos [Tutorial simples]
» [TUTORIAL] Criar botões (com UI) para movimentação simples
» [TUTORIAL] Movimentação Básica No Unity (Translate e Rotate)
» [TUTORIAL] Introdução para iniciante e tutorial de Click move com raycast
» [TUTORIAL] Como spawnar inimigos [Tutorial simples]
» [TUTORIAL] Criar botões (com UI) para movimentação simples
» [TUTORIAL] Movimentação Básica No Unity (Translate e Rotate)
» [TUTORIAL] Introdução para iniciante e tutorial de Click move com raycast
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos