MMORPG-de-Acción-3D-en-Godot-Engine-Thumbnail

Desarrollar un MMORPG de Acción 3D en Godot Engine

Introducción II

En esta clase voy a enseñarte a crear al personaje, aplicar movimiento al jugador, y poner en práctica varios conceptos y/o principios básicos de cámara. Si eso fuera poco, vamos a estar escribiendo un poco de código de programación para darle a nuestros objetos en escena 3D funciones y ajustes especiales para darle más dinamismo y vida a nuestro arte de videojuego como desarrolladores, no estaría mal echarnos un buen MMORPG moderno acorde a la industria actual de los videojuegos.

Si te quedaron dudas de la clase anterior, debes hacerlo saber en la caja de comentarios que tienes justo debajo de este post. El feedback ayuda un montón a posicionar este contenido y apoyar a una misma causa que es “aportar conocimiento”. Manos a la obra.

What it Includes

Para esta ocasión vamos a estar trabajando con un modelo sumamente básico que realice en Blender de una simple esfera que nos valdrá como arma. Nuestro personaje será una hechicera y la razón de su esfera se debe a que el Orbe Mágico que le servirá de ataque y así masacrar a sus enemigos.

Recursos Disponibles

• Models ➤ https://ouo.io/N6sd9b

Creando al Jugador

Crear una nueva escena con un nodo principal de KinematicBody. Este es un nodo para físicas de objetos que salen caminando por ahí, como un jugador o enemigo.

    • Como un hijo, crear un nuevo nodo del tipo MeshInstance
      • Establecer Mesh a CapsuleMesh
      • Establecer Radius de malla a 0.5
      • Establecer Traslation con los siguientes valores 0, 1, 0
      • Establecer Rotation Degress con los siguientes valores 90, 0, 0
    • Otro hijo es el nodo CollisionShape
      • Posee exactamente las mismas propiedades que el nodo MeshInstance

mmorpg-course-screenshot-0011

Para la cámara vamos a tener un nodo central con la cámara como el hijo.

  • Crear un nuevo nodo del tipo Spatial y renombrarlo a CameraOrbit
  • Establecer Traslation con los siguientes valores 0, 1, 0

Como un hijo de este, crear un nuevo nodo Camera

  • Habilitar la propiedad Current palomeando la casilla
  • Establecer Traslation con los siguientes valores -1, 1, -5
  • Establecer Rotation Degress con los siguientes valores 0, 180, 0

mmorpg-course-screenshot-0012

El Arma Mágica

Para el orbe de nuestra hechicera, vamos a crear un nodo del tipo Spatial denominado OrbHolder. Éste sujetará el modelo orbe.

  • Establecer Traslation a con los siguientes valores -0.58, 1, 0.035

Como un hijo de este nodo, arrastrar en el modelo Orb.dae

  • Establecer Rotation Degress a 0, 90, 45
  • Establecer Scale con los siguientes valores 0.05, 0.05, 0.05

mmorpg-course-screenshot-0013

Para cuando quieras atacar a los enemigos, necesitarás crear un nodo RayCast. Renombrarlo a AttackRayCast. Éste dispara a un punto de una posición concreta y recibirá la información sobre lo que haya golpeado.

  • Habilitar Enabled así pues el ray trabajará
  • Establecer Cast To con los siguientes valores 0, 0, 1.5
  • Establecer Traslation con los siguientes valores -0.3, 1, 0.6

mmorpg-course-screenshot-0014

De regreso a MainScene, arrastremos la escena PlayerScene.

mmorpg-course-screenshot-0015

Solo toca ajustar un poco de los manipuladores para ubicarlo adonde nosotros queramos.

Vista de Cámara

Ahora que contamos con nuestro objeto jugador, partiremos por hacer un poco de scripting para el sistema de cámara. En la escena PlayerScene, seleccionar CameraOrbit. Podemos empezar con las variables.

# stats de la cámara
var camSensitivity : float = 15.0
var minAngle : floot = -20.0
var maxAngle : float = 75.0
# vectores
var mouseDelta = Vector2()
# componentes
onready var player = get_parent()

La función _input será llamada cuando detecte alguna entrada (teclado, botones del mouse, movimiento del mouse, etc). Queremos comprobar si el mouse fue movido, y para eso – establecemos el mouse en delta.

# hará la llamada cuando haya detectado una entrada
func _input (event):

# establecemos "mouse delta" cuando movamos nuestro mouse
if even is InputEventMouseMotion:
mouseDelta = event.relative

Notad que los # o almohadillas son líneas de comentarios. Una breve descripción de lo que realizan las siguientes líneas de código.

Dentro de la función _process (llamada en cada frame), vamos a rotar la cámara verticalmente y rotar al jugador horizontalmente. Girando al jugador por separado facilita la tarea de calcular las direcciones de movimiento.

# llamada en cada frame
func _process (delta):

# consigue que la rotación se aplique a la cámara y al jugador
var rot = Vector3 (mouseDeltar.y, mouseDelta.x, 0) * camSensitivity * delta

# rotación de cámara vertical
rotation_degress.x += rot.x
rotation_degress.x = clamp (rotation_degress.x, minAngle, maxAngle)

# rotación del jugador horizontal
player.rotation_degress.y -= rot.y

# limpiar el vector de movimiento del mouse
mouseDelta = Vector2()

¿Te quedaste con ganas?

En el siguiente Episodio beberemos una Monster Turbo para el Scripting de movimientos y cámara del Jugador. Echaremos a andar por primera vez el programa y experimentar lo que hemos logrado. Va a estar fabuloso!.

No olvides de formar parte de nuestra Red de Usuarios para que te unas, rellenando el formulario de REGISTRO para que puedas acceder y continuar las clases tal cual. Te garantizamos que vas a lograr resultados más que excelentes en tu carrera artística como desarrollador/a de videojuegos. Un gusto compartir todo este conocimiento con ustedes, nos vemos en el siguiente episodio.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *