ComunidadID
Bienvenido a ComunidadID

¿Quieres promocionar tu videojuego?

Regístrate y publicalo 
en nuestros foros!


No estás conectado. Conéctate o registrate

Unity 2D Programación C# - Movimiento 8 direcciones "ACTUALIZADO"

    

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

Mart


ADMINISTRADOR
ADMINISTRADOR
Este seria el código para crear un movimiento en 8 direcciones para un juego de vistas aéreas.


Este Script a sido actualizado por cuestión de un pequeño error que ocurría cuando antes de iniciar el juego posicionabas el player en otra posición y al iniciarlo el script lo volvía a posicionar automáticamente al centro de la pantalla.
Mas abajo seguiré dejando el Script antiguo.

SCRIPT ACTUALIZADO:

Link: [Tienes que estar registrado y conectado para ver este vínculo]


Código:
using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour {

 public float Speed = 10.0f;  // Declaramos una variable float para la velocidad de movimiento

 // Use this for initialization
 void Start () {
 
 }
 
 // Update is called once per frame
 void Update () {
 
 if (Input.GetKey (KeyCode.D)){                                    // En estos IF simplemente decimos que suceda algo al pulsar las teclas S,W,A,D
 transform.position += Vector3.right*Speed*Time.deltaTime;        
 }  // Luego el codigo hace lo siguiente: Modifica la posicion del objeto y le suma
  // un vector3."hacia la direccion" multiplicado por el valor de la variable Speed
 if (Input.GetKey (KeyCode.A)){  // y multiplicandolo por un Time.deltaTime.
 transform.position += Vector3.left*Speed*Time.deltaTime;
 }

 if (Input.GetKey (KeyCode.W)){
 transform.position += Vector3.up*Speed*Time.deltaTime;
 }

 if (Input.GetKey (KeyCode.S)){
 transform.position += Vector3.down*Speed*Time.deltaTime;
 }
 }
}

/*NOTA: Un Time.deltaTime es el tiempo transcurrido desde el ultimo fotograma.
 Si desea mover algo a una velocidad constante, multiplicar la velocidad por Time.deltaTime y obtendrá exactamente la distancia recorrida.

 distancia = velocidad * tiempo*/





SCRIPT ANTIGUO:

Código:
using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour {
 
 public float Horizontal = 0;
 public float Vertical = 0;
 // Use this for initialization
 void Start () {

 }
 
 // Update is called once per frame
 void FixedUpdate () {

 if(Input.GetKey (KeyCode.W)) {
 Vertical = Vertical + 0.2f;}

 if(Input.GetKey (KeyCode.S)) {
 Vertical= Vertical -0.2f;}

 if(Input.GetKey (KeyCode.A)) {
 Horizontal= Horizontal -0.2f;}

 if(Input.GetKey (KeyCode.D)) {
 Horizontal= Horizontal + 0.2f;}
 
 Vector2 movement = new Vector2 (Horizontal, Vertical);

 //Esto actualiza la posicion del sprite;
 transform.position = movement;
 }

}

http://www.comunidadid.com

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

    

Permisos de este foro:
No puedes responder a temas en este foro.