Acciones

Diferencia entre revisiones de «Videojuegos 1: mecánicas simples»

De >Core Dumped_ WIKI

Línea 88: Línea 88:
 
     '''}'''
 
     '''}'''
 
'''}'''
 
'''}'''
 +
 +
Al utilizar fuerzas, también se necesita una speed, y, se utiliza un '''Vector2.right''' que es para añadirle la dirección de la fuerza.

Revisión del 15:41 5 nov 2018

Petición a hacer

El primer hito de videojuegos consiste en crear con el motor gráfico UNITY un personaje con solisiones que sea capaz de moverse horizontalmente y saltar. El segundo consiste en añadir plataformas estáticas a las que poder saltar y caminar sobre ellas junto a un sistema de generación aleatorio de objetos con los que el usuario pueda interactuar.

Movimiento del Jugador 2D

Depende del juego en 2D que queramos crear, el movimiento del jugador varía. Si jugamos en un scroll 2D como puede ser por ejemplo "Mario Bros" hay movimiento de izquierda derecha y salto. Pero en un juego con vista isométrica tipo Zelda, hay movimiento en todas direcciones sin salto (el salto se puede incluir pero funcionaría diferente, dejando de ser parte del movimiento).

El movimiento en un scroll 2D es muy sencillo, Unity tiene una función que obtiene directamente la dirección en la que te estás moviendo, es decir si pulsas "a" o "<--" devuelve -1, mientras que si pulsas "d" o "-->" devuelve 1. Esa función necesita que su valor se guarde en una variable para ser utilizado. (Eg.)


using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Player : MonoBehaviour {



void Start () {


  }

void Update () {

       float h = Input.GetAxis("Horizontal");
   }

}


Ahora, con la variable anterior se pueden hacer dos cosas dependiendo del juego que queramos crear, se puede hacer el movimiento mediante vectores muy utilizado en plataformas y el otro es mediante fuerzas que por ejemplo, se utiliza en juegos de naves espaciales. Ambos precisan modificar el Rigidbody2D ya implementado. A continuación se mostrarán las dos formas:


using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Player : MonoBehaviour {


       private Rigidbocy2D rb;
       public float speed=5f;
 

void Start () {

       rb = GetComponent<Rigidbody2D>();
       
  }

void Update () {

       float h = Input.GetAxis("Horizontal");
       rb.velocity = new Vector3(h*speed, rb.velocity.y, rb.velocity.z);
   }

}

El de vectores precisa una velocidad que establecemos como pública para poder modificarla desde el editor de Unity.

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Player : MonoBehaviour {


       private Rigidbocy2D rb;
       public float speed=5f;
 

void Start () {

       rb = GetComponent<Rigidbody2D>();
       
  }

void Update () {

       float h = Input.GetAxis("Horizontal");
       rb.AddForce(Vector2.right * speed * h);
   }

}

Al utilizar fuerzas, también se necesita una speed, y, se utiliza un Vector2.right que es para añadirle la dirección de la fuerza.