No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

14 Días
20 Hrs
0 Min
0 Seg

Disparo direccional

12/41
Recursos

Aportes 18

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para los que son curiosos y les gusta saber de donde vienen lo que acabamos de hacer:

  • Obtenemos la posicion del mouse y lo transformamos a cordenadas de mundo.
  • Normalizamos este vector para que dicha posición tenga una magnitud total a 1:
    Normalización de vectores :
    https://www.matematicas10.net/2017/03/ejemplos-de-normalizacion-de-vectores.html
  • Asignamos la posición
    Hasta aqui pueden hacer una pausa probar el codigo y ver como funciona(Es bastante interesante y puedes probar multiplicar o dividir el vector normalizado y ver que sucede)
    aim.position = (Vector3) _aimDirection.normalized * 2 + transform.position;
  • Para que la “mira” siga al jugador, le sumamos la posición del mismo, lo cual lo hara que el jugador se vuelva un tipo centro.
    Para comprender mejor como funciona la posición de la mira, podemos hacerlo a partir de la ecuación del circulo y revisar el curso de algebra lineal de platzi 😄

Introduccion al algebra lineal: https://platzi.com/clases/intro-algebra/

Articulo sobre la ecuación de un circulo https://es.khanacademy.org/math/geometry/xff63fac4:hs-geo-conic-sections/hs-geo-circle-expanded-equation/a/circle-equation-review
https://www.analyzemath.com/spanish/CircleEq/CircleEq.html

Le hice una imagen al puntero: (Se ve un poco mal aqui)

Para hacer casting de cualquier cosa en C#: (int)nombreVar. o algo como (float)nombreVar; lo que es fácil.

🤖 Para los que en Visual Studio no les reconoce el autocompletado sigan estos pasos:

En unity: Pestaña edit >> preferences >> External Tools
y en External Script Editor seleccionan a Visual Studio.

Cierra Visual y lo vuelven a abrir dando doble click al script y van a ver una diferencia en cómo se acomoda todo dentro del IDE. Saludos! 🤖

Al método de ScreenToWorldPoint, le pasamos la posición del mouse. esto lo hacemos sacando del objeto Input, el mouse position: Input.mousePosition.

Vector2 es para físicas 2D y Vector3 es para físicas 3D.

Para normalizar los vectores, tenemos normalized como método.

Hace tiempo que no tenia tanto hype de desglosar una formula 😂😂

Si tienen el error que la mira no sigue como deberia (como en el video) es porque (en mi caso) puse mal el ScreenToWorldPoint asegurate que sea asi

ayuda por favor, que estoy haciendo mal, no se ve la referencia de mira verde!!! :,c

![](

Es buena práctica serializar varias propiedades, para que puedas desde el editor de Unity, cambiar muchas variables y referencias. Esto es muy importante a la hora de relacionar los objetos (Cosa que ocurre constantemente en lo videojuegos)

Para obtener la dirección de nuestro mouse en el juego, tenemos que crear la referencia a la cámara principal, para hacer una instacia de cámara en C# : Camera nombreVar; Luego el objeto Camera, tiene el método ScreenToWorldIdPoint, con el que obtenemos una traducción de la posición del mouse, a puntos en el mapa.

Para los que les dio un error
Cuando se mueve el personaje, la mira se cambia de dirección (mostrando la opuesta al movimiento del personaje) e ignora la posición del mouse por un momento. Para solucionarlo la línea de código:

facingDirection = camera.ScreenToWorldPoint(Input.mousePosition) - transform.position; 

Cambien por:

facingDirection = camera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, -Camera.main.transform.position.z)) - transform.position;

Y con eso funciona perfectamente 😄. Espero que les sirva!

Esta clase me voló el cerebro 😂
Pero siempre resulta bueno reforzar esta parte de las matematicas

Genial

Wow!, Me encanta todo lo que he aprendido hasta ahora…

Después de estar jugando con el código, llegue a hacer estas líneas para que la mira recorra una elipse en vez de una circunferencia usando matemáticas. Les dejo el código si quieren usarlo, para variar el tamaño de la elipse, cambien el coeficiente que multiplica a xaim o yaim.

//Movimiento de la mira
        facingDirection = camera.ScreenToWorldPoint(Input.mousePosition) - transform.position;
        float xaim = aim.position.x;
        xaim = transform.position.x + facingDirection.normalized.x;
        float yaim = aim.position.y;
        yaim = transform.position.y + facingDirection.normalized.y;
        Vector2 aimposition;
        aimposition.x = xaim * 2;
        aimposition.y = yaim * 6;
        aim.position = aimposition; 

Me estaba generando un error porque player no tenía ninguna cámara asignada y no me permitía arrastrar la cámara que creamos. En el atributo Camera del script Player, le asigné Main Camera y empezó a funcionar.