No tienes acceso a esta clase

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

Prep谩rate para tu pr贸ximo empleo comprando hoy a precio especial

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

7 D铆as
20 Hrs
23 Min
12 Seg

Creaci贸n de un proyectil

13/41
Recursos

Aportes 11

Preguntas 7

Ordenar por:

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

Vamo a ver si entendi:
Paso 1
Obtenemos el angulo actual de la mira en radianes por medio del arcotangente o bien atan

Paso 2
Seguimos a crear una variable encargada de manejar la quaternion en la que instanciaremos al objeto con el metodo Quaternion.AngleAxis() El cual recibe como parametro la rotaci贸n que deseamos realizar y el eje en el cual se hara la rotaci贸n, en este caso Vector3.Forward(0,0,1) es decir en el eje Z.(Este eje dependera segun el vector hacia el cual se dirija la bala, en este caso Vector3.Right)
** Paso3 **
Por ultimo instanciamos el objeto en la posici贸n actual del player y con la quaternion que hemos obtenido en el paso anterior.

Si alguien encuentra algun error en mi razonamiento del codigo, por favor haganmelo sabes 馃槃

Para los que quieran saber mas sobre cosas como ese 鈥淪erialized Field鈥,sus nombres son atributos y pueden saber mas sobre ellos aqui:

https://learn.unity.com/tutorial/atributos?language=es&projectId=5e419552edbc2a0a62170f9c

Siento que solo est谩 dictando c贸digo pero no explica bien para que sirven ciertas funciones(m茅todos). Igual investigo de la API de Unity de modo que termino entendi茅ndolo m谩s o menos, pero podr铆a explicarlo mejor.

Para hacer un gameObject de manera r谩pida, utilizamos los prefabs y adem谩s tenemos que usar la funci贸n Instantiate, para que tome forma en el juego.

Todo GameObject, que se mueva a una carpeta dentro del proyecto, ser谩 un Prefab.

Genial

Si cambias GetMouseButton por GetMouseButtonDown ya dispara una sola bala.
Aunque con el GetMouseButton ya puedes hacer una lluvia de balas en todas direcciones.

Sino entienden para que sirve una variable cualquier cosa les recomiendo que le pregunten a chat gpt y l es da la definici贸n

se aorende mucho

Dispare mucho y se me crasheo :C

Me costo muchisimo entender el ultimo condicional, asi que me pase un ratito para entender, se los paso por si alguno estuvo igual de perdido que yo

Nuevo sprite, reseteamos transform y creamos un script bullet
serializamos un campo con un float llamado speed y ponemos esto en update()

 transform.position += transform.right * Time.deltaTime * speed;

Hacemos (si no existe) la carpeta de prefabs y arrastramos el objeto bullet a la misma.
Agreagamos esto a el script player

    [SerializeField] Transform bulletPrefab

Y desde el inspector arrastramos el prefab (de la carpeta prefab no de la jerarquia) a el campo que creamos

En el script Player agregamos

if (Input.GetMouseButton(0)){
            Instantiate(bulletPrefab, transform.position, Quaternion.identity);
}

Input.GetMouseButton(), Toma como entrada el boton izquierdo del mouse si argumentamos 0 y el derecho si argumentamos 1.
Instantiate(), Crea un objeto que pasemos como parametro, ademas de especificar su posicion.
Quaternion sirven para representar rotaciones. identity hace que la rotacion sea 0.
Es decir, con este if hacemos que una bala se instancie en la posicion del jugador al apretar click izquierdo.

  • Momento de sacar la rotacion para que dispare en direccion correcta.
    Para esto necesitamos sacar el angulo entre el jugador y la mira, el script queda asi
if (Input.GetMouseButton(0)){
       float angle = Mathf.Atan2(facingDirection.y, facingDirection.x) * Mathf.Rad2Deg;
       Quaternion targetRotation = Quaternion.AngleAxis(angle, Vector3.forward);
       Instantiate(bulletPrefab, transform.position, targetRotation);
 }
  • Mathf.Atan2() lo que hace es ubicar en un eje cartesiano las dos DIRECCIONES que le pasemos por parametro (x e y) y de ah铆 saca el angulo entre la trayectoria y el eje x.
    Atan2 nos entrega este angulo en radianes (expresion matematica para angulos).
    NOTA: Para que Antan2 funcione necesita que el sprite del prefab este mirando hacia la derecha.

  • Mathf.Rad2Deg convierte el numero radian a angulo de euler, que es el que usa el trnasform.

  • Quaternion.AngleAxis(float angulo, Vector3.direccion) crea una rotacion, por parametro pasamos el angulo como float (el que hicimos recien) y un vector3 indicando la direccion.