No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Disparo direccional

12/40
Recursos

Aportes 18

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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 鈥渕ira鈥 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.

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 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! 馃

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

Hace tiempo que no tenia tanto hype de desglosar una formula 馃槀馃槀

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

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

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.