Atacando a diestro y sinistro:
Introducción
Game Design del juego
La estructura y assets de un proyecto en Unity
Convirtiendo nuestros assets en Tiles
Tilemaps y creación del escenario
Bonus: FastForward de la creación del escenario, sorting layers y creación de colliders
Acá encontrarás los archivos de este curso
Personaje principal: Movimiento y Animaciones
El jugador y el movimiento
Creando nuestra primera animación
Creando el grafo de animaciones
Usando un árbol de animaciones
Mostrando la solución del desafío e implementando transición entre blended trees
Programando una cámara que siga al jugador
Corrección del bug gráfico
límites del escenario, rigid bodies
Ejercicio: diseño de interiores
Escenarios Avanzados
Transiciones entre escenas
Mantener Player y Camera entre escenas
Spawning Points: programando que el jugador y la cámara aparezcan en el lugar correcto al cambiar de escena
Agregando Identificadores a nuestros Spawning Points para controlar mejor el flujo de nuestro juego
Enemigos Avanzados
Creando nuestro enemigo
Programando las físicas y el patrullaje del enemigo
Generando movimiento completamente aleatorio
Programando el ataque del enemigo
Crear Manager de Health del Player
Crear armas
Programando el ataque del Player con arma
Mover la espada al caminar
Creando el ataque con espada
Ejecutando el ataque con un botón
Movimiento en diagonal
Optimizando nuestro player controller
Ataque mejorado
Uso de partículas
Añadir el daño del enemigo en batalla
Programando los contadores de vida del enemigo
Colocando más info de UI en pantalla
Script de la vida
Personaje principal avanzado
Añadir el daño del personaje (ejercicio)
Sistema de puntos de experiencia para nuestro personaje principal
Level Up!
Level Up! Defensa y Reto Final del Módulo: Stats de los enemigos
Creando un NPC
Limitar el movimiento de nuestro NPC
Creando una pantalla de diálogos para nuestro RPG
El diálogo del NPC
Múltiples líneas de diálogo
Parar el NPC durante el diálogo
Parar el personaje durante el diálogo
Quests
La estructura de una quest
Quest 1: Ir a un lugar
Quest 2: Encontrar un objeto
Quest 3: Matar enemigos
Revisión de bugs
Mantener la cámara dentro del escenario
El problema al cambiar de escena
Audio
Agregando SFX a nuestro videojuego
Agregando música a nuestro videojuego
Ajustar volúmen del audio de cada uno de los efectos de sonido
Creando un VolumeManager
Agregando economía a nuestro juego y cierre
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Juan Gabriel Gomila
Aportes 7
Preguntas 1
Atacando a diestro y sinistro:
Excelente clase, es muy bueno que en todo el curso ir saltando de programar a animar, porque así vamos viendo como es que realmente es que se desarrollo un videojuego en la vida real, y ademas hace las clases mas dinámicas.
Además de que el profesor es increíble.💚😄
He logrado hacer que el bastón lance una bolita que hace daño, y solo cuando se tiene el bastón equipado
asi explicado el codigo es mas facil de entender
Genial
Yo puse las funciones después de invocar la función de caminar para poder moverme después de atacar y quite el playerRigidbody.velocity.zero, para que no se frene y la verdad es que es muy útil.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float speed = 2.5f;
private bool IsWalking = false;
public Vector2 lastMovement = Vector2.zero;
private const string horizontal = "Horizontal";
private const string vertical = "Vertical";
private const string lastHorizontal = "LastHorizontal";
private const string lastVertical = "LastVertical";
private const string isWalkingState = "IsWalking";
private const string attackingState = "Attacking";
private Animator animator;
private Rigidbody2D playerRb;
public static bool playerCreated;
public string nextPlaceName;
private bool attacking = false;
public float attackTime;
private float attackTimeCounter;
// Start is called before the first frame update
void Start()
{
animator = GetComponent<Animator>();
playerRb = GetComponent<Rigidbody2D>();
if (!playerCreated)
{
playerCreated = true;
DontDestroyOnLoad(this.transform.gameObject);
}else
{
Destroy(gameObject);
}
}
// Update is called once per frame
void Update()
{
// s = v*t;
IsWalking = false;
if (Mathf.Abs(Input.GetAxisRaw(horizontal)) > 0.5f)
{
/* this.transform.Translate(new Vector3(Input.GetAxisRaw(horizontal) * speed * Time.deltaTime, 0, 0)); */
playerRb.velocity = new Vector2(Input.GetAxisRaw(horizontal) * speed * Time.deltaTime, playerRb.velocity.y);
IsWalking = true;
lastMovement = new Vector2(Input.GetAxisRaw(horizontal), 0);
}
else
{
playerRb.velocity = new Vector2(0f, playerRb.velocity.y);
}
if (Mathf.Abs(Input.GetAxisRaw(vertical)) > 0.5f)
{
/* this.transform.Translate(new Vector3( 0, Input.GetAxisRaw(vertical) * speed * Time.deltaTime, 0)); */
playerRb.velocity = new Vector2(playerRb.velocity.x, Input.GetAxisRaw(vertical) * speed * Time.deltaTime);
IsWalking = true;
lastMovement = new Vector2(0, Input.GetAxisRaw(vertical));
}
else
{
playerRb.velocity = new Vector2(playerRb.velocity.x, 0f);
}
if (!IsWalking)
{
playerRb.velocity = Vector2.zero;
}
if (Input.GetKey(KeyCode.Z))
{
attacking = true;
attackTimeCounter = attackTime;
animator.SetBool(attackingState, true);
}
if (attacking)
{
attackTimeCounter -= Time.deltaTime;
if (attackTimeCounter < 0)
{
attacking = false;
animator.SetBool(attackingState, false);
}
}
animator.SetFloat(horizontal, Input.GetAxisRaw(horizontal));
animator.SetFloat(vertical, Input.GetAxisRaw(vertical));
animator.SetBool(isWalkingState, IsWalking);
animator.SetFloat(lastHorizontal, lastMovement.x);
animator.SetFloat(lastVertical, lastMovement.y);
}
}
Hola tengo un bug y es que cuando intento de atacar hacia la izquierda ataca hacia la derecha alguien sabe como corregir esto?
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?