Juan Carlos Torres
Fernando Nicolás Carrillo López
Gran aporte crack!!!!
Ericson Luis Quispe Abad
bro como accedo a las herramientas, no me aparece :(
Mejora el control de colisiones, construye escenarios reutilizables y programa un Player Controller sólido en C# sin perder rendimiento. Aquí verás por qué combinar colliders es una solución práctica, cuándo evitar edge collider 2D y cómo organizar métodos y variables en Unity para trabajar con claridad desde el primer día.
¿Cómo combinar colliders para formas complejas en Unity?
Cuando una forma no encaja con un único collider (caja, cápsula o círculo), la solución eficaz es combinarlos. Una roca irregular puede requerir dos colliders distintos para aproximar su volumen. Es una simplificación que evita calcular medio millón de polígonos y mejora el detalle de colisión por partes.
¿Cuándo usar o evitar edge collider 2D?
El edge collider 2D es solo una línea: no define interior ni exterior. Por eso no es sólido como caja, cápsula o círculo, y puede permitir que parte de un GameObject atraviese el otro si no se configura con cuidado.
¿Cómo crear el Player Controller en C# y configurar métodos y variables?
Antes de programar, deja solo el protagonista y una plataforma para que no caiga por la física. Crea el script en la carpeta Scripts: botón derecho > Create > C# Script y nómbralo “Player Controller”. Unity genera la estructura base con using, clase pública que hereda de MonoBehaviour y los métodos Start y Update.
¿Qué estructura base crea Unity en un script de C#?
using UnityEngine; public class PlayerController : MonoBehaviour { // Variables del movimiento del personaje public float jumpForce = 6f; // editable en el inspector private Rigidbody2D rigidBody; // componente de física 2D void Start() { // se ejecuta al iniciar el juego } void Update() { // se ejecuta cada frame } void Jump() { // reproduce la animación de salto (sin retorno) } }
¿Cómo nombrar métodos y variables con camel case?
En C#, los métodos empiezan en mayúscula y siguen camel case: Jump. Las variables empiezan en minúscula: jumpForce. Un método void no devuelve valor; si devolviera datos, usarías tipos como boolean, int o float.
// Método sin retorno ni parámetros void Jump() { // lógica/animación de salto }
¿Cómo exponer parámetros y enlazar componentes en el inspector?
Las variables públicas se editan desde el inspector. Ejemplo: jumpForce como float con sufijo F para decimales. Para componentes existentes en el objeto (como el Rigidbody2D), usa una variable privada y evita nombres conflictivos.
// Expuesta en el inspector public float jumpForce = 6f; // Interna y clara de leer private Rigidbody2D rigidBody; // alternativa 1 // private Rigidbody2D playerRigidBody; // alternativa 2
¿Te gustaría ver más ejemplos de movimiento, salto y físicas en 2D? Deja tus preguntas o dudas en los comentarios y cuéntame qué te gustaría implementar después.
Juan Carlos Torres
Fernando Nicolás Carrillo López
Gran aporte crack!!!!
Ericson Luis Quispe Abad
bro como accedo a las herramientas, no me aparece :(
JORGE LUIS TORRES SARÁ
Hola, tengo un inconveniente al tratar de asignarle a mi personaje el script, lo hago de las formas indicadas en el video pero me aparecen el siguiente mensaje:
“can´t add script behavior assemblyIfo. The script needs to drive from monobehaviour!”
Luis Rodrigo Alvarez Herrera
tuve un problema similar, no se el motivo, pero rehice el script y se soluciono espero te ayude
Luis Rodrigo Alvarez Herrera
tambien verifica el nombre de las clases
Ervic Perez Mendoza
Unity tiene una serie de tutoriales que pueden reforzar lo que estamos aprendiendo aquí. https://www.youtube.com/playlist?list=PLX2vGYjWbI0S9-X2Q021GUtolTqbUBB9B
Juan Herrera
gracias bro!
Addison Reyes
Para la roca triangular no es necesario utilizar diferentes colliders por separado, en Unity del 2021 hay un collider llamado "Polygon Collider 2D" te hace las colisones perfectas para el sprite.
Abdel Mejia
Otro nombre de variable normalmente para el rigidbody es "rb"
private Rigidbody2D rb;
Con la parte de los nombres de las variables es preferencia de cada quien, esto es una forma de hacerlo, solo tener en cuenta que los nombres de las variables debe describir su uso en el programa.
En mi caso a quedado así
private Rigidbody2D rb; private void Awake() { rb = GetComponent<Rigidbody2D>(); }
Wilmer David Cedeño Mendoza
Es muy útil tener nombres cortos y ahorra bastante tiempo, pero se hace un poco complicado de recordar y leer para otras personas que no han escrito el código e interpretar su significado.
Andres Alba
Visual Studio e puede conseguir gratis? o siempre es pago?
Esteban Aragon
Hola, VS es pago, debes tener una licencia para poder usarlo, aveces da licencias gratis a estudiantes con convenios.
Mauro Gomez
https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=16
Hay una versión gratuita pero es muy lame con respecto a la profesional
Juan Lagares
hola, tengo un error al momento de generar lo de rigidBody2d porque al parecer no esta funcionando el monobeheaviour, osea no reconoce que es una clase de UnityEngine
Jose Antonio Marín López
¿Has comprobado que el nombre del fichero sea el mismo que el de la clase? En caso afirmativo, ¿puedes dejar el código para que podamos verlo?
Camilo Andres Agudelo
Para el Collider de la roca me parece que es mucho mas practico utilizar Polygon Collider 2D se adapta perfectamente a la estructura de la roca
Juan Sebastian Ortiz Santacoloma
Victor Manuel Lagunas Franco
Usa SerializedField cuando tu variable sea privada y necesites acceder a ella
pardo JOSE ENRIQUEZ
una Consulta los "metodos de la clase" siempre van en mayuscula???, no se pueden escribir en minuscula tambien??. Debido a que tambien las clases se escriben en mayuscula, igual que las constantes, nos llevaria a una confucion o no???.. Gracias
Luis Lira
Claro que se puede, pero es un convención del lenguaje nombrar atributos, clases y métodos iniciando con mayúsculas. A esta estructura se le llama "PascalCase"
ian f
Tengo una duda lo de hacer que una variable se vea en el inspector no es mejor usando [SerializeField] por que no vamos a llamar a la variable afuera del script?
Ramon Magaña Carrillo
¿Existe algún problema si, utilizo Visual Studio Code?, o me recomienda usar Visual Studio?
Sergio Rubiano
No existe ningún problema si utilizas Visual Studio Code
Ivan Sangueza Alarcon
Visual Studio Code se volvio en uno de los mejores editores de texto (por no decir el mejor) te servira para varios lenguajes y ademas te ayuda bastante con tu codigo
Luis Antonio Preza Padilla
Me surge la duda de cómo es que siendo C#. Una variable no requiere ser declarada así:
public float jumpForce { get; set; } = 6f;
Y en cambio, usa perfectamente esta otra manera:
public float jumpForce = 6f;
¿Es algo con lo que trabaja Unity? ¿Cuál es la razón?
Leonardo Gutierrez
Genial
Karla Ivon Damian
¿Por qué no utiliza un mesh collider? No se ajusta mejor o ¿cómo funciona?
Lautaro Lazota
Hola,me gustaría saber que programa usar para hacer los scripts,porque no tengo licencia de VisualStudio y no se como instalar Mono(Aparentemente este programa ya no se puede usar en Unity).
Juan Carlos Torres
Tu puedes descargar Visual Studio de manera gratuita con la versión Community aqui: https://visualstudio.microsoft.com/es/thank-you-downloading-visual-studio/?sku=Community&rel=16
Sebastian Duran
el metodo fixedUpdate() nos ayuda con los problemas de los frame que puede llegar a tener el metodo update
Antonio Demarco Bonino
Sin prisa pero sin Pausa!!!
Compañeros algo que me paso con mientras hacia el código en Visual Studio fue el hecho que no reconoció el objeto Rigidbody2D en el intellisense
esto puede generar errores como por ejemplo escribir mal el nombre de la clase o de la librería de Unity, o no tener la documentación exacta de las clases u objetos que maneja, lo solucionan de esta forma:
Seleccionen Desarrollo de juegos con Unity y luego hacen clic en modificar en la parte inferior derecha. El proceso tomara unos minutos.
En Unity, en el menú van a Editar -> Preferencias, al abrir el panel seleccionen la opción Herramientas Externas y busquen la opción Editor scripts externo
Por defecto les va aparecer Abrir por extensión de archivo cámbielo por Visual Studio Community
Otra forma en la que se pueden editar las variables sin hacerlas publicas y asi se evita que otros scripts puedan modificar la variable es utilizando SerializedField.
using UnityEngine; public class PlayerController : MonoBehaviour { // Configurations params [SerializeField] float jumpForce = 6f; Rigidbody2D rigidBody; Animator anim; // Start is called before the first frame update void Start() { anim = GetComponent<Animator>(); anim.SetBool("isOnTheGround", true); anim.SetBool("isAlive", true); } // Update is called once per frame void Update() { if (Input.GetButtonDown("Jump")) { anim.SetBool("isOnTheGround", false); } if (Input.GetButtonUp("Jump")) { anim.SetBool("isOnTheGround", true); } } }