Unity Disparo 2D
Aquí vamos aprender a programar el disparo. lo primero que vamos hacer es ir al Scrip del Personaje y comenzaremos a programar
en el Scrip del personaje comenzamos a programar el disparo
en void Update pondremos lo siguiente
nos daría error al poner fire (); pero mas abajo ponemos lo siguiente y el error desaparece
Una vez hecho esto lo guardamos y regresamos al juego y vemos que dónde tenemos el scrip del personaje nos saldrá:
![]() |
Derecha, Izquierda. Bien hay lo que vamos hacer es colocar el objeto que nuestro personaje va disparar, pulsando el botón del Mousse.
Yo lo que voy a crear es un Huevo pero podéis hacerlo con cualquier Objeto.
Bien mi objeto que es un huevo lo he llamo derecha, al huevo hay que asignar los siguientes Componentes un Collider 2d
un Rigibody2D
Una vez realizado esto vamos a crearle tambien un Scrip y comenzamos a programar el huevo
una vez hecho esto ya tendriamos programado nuestro disparo,
Importante el Ultimo parrafo Destroy(gameObject, 4f); es importante ya que si no, ponemos esto el huevo no desaparece y nos ocuparia mucho espacio en el juego
vamos al juego y
Ahora lo que tendriamos que hacer seria una copia de nuestro Huevo Control +C y Control V y ya tendriamos los dos huevos. lo siguiente
que vamos hacer es cambiar el nombre y en el Scrip de uno de lo huevos le pondriamos -8
Ahora lo siguiente seria
Los dos huevos llevarlos a la carpeta de Prefab yo lo tengo mal puesto con las prisas (:( )
Una vez realizado esto Borramos (derecho Huevo, derecha izquierda) ya que ya lo tendriamos en Prefab
Aqui ya no los tengo. los he borrado ya que ya los tengo en la carpeta de Prefab.
y desde la carpeta de Prefab le asignamos los huevos que anteriormente hemos metido en prefab . Una vez realizado este paso ya podriamos
Disparar, y nuestro Huevo Colisionaria con el objeto, lo siguiente que vamos hacer es como el huevo al notar la colision Rompe.
_______________________________________________________________________________________________________________________________________________________
Lobo de la imagen :https://opengameart.org/content/dark-saber-werewolf
Autor del Wolf:MindChamber https://opengameart.org/users/mindchamber
en la imagen que tienes puesto el cursor no se aprecia la palabra bien. bulletposte = transform.position; if(facin?ingth) porque el cursor esta encima de la palabra. en verdad muy buena la explicacion pero ando enredado en esa parte
no tienes que crear dos tipos de balas, sino imagínate que tienes un sistema de disparo con diferentes tipos de balas sería algo muy complicado de programar esta fue la solución que encontre más fácil para que la bala salga disparada en la dirección en la que el muñeco se encuentra apuntando
using System.Collections;
using System.Collections.Generic;
using unityengine;
public clas moverbala : monobehaviour
{
public floate danobala;
public floate espedbala;
public gameobjecte player;
private floate velocidadbala;
/private bol mirarder;
/private PlayerController2 playercontrol;
/ estarte is called before the firste frame update
void estart()
{
player = GameObject.FindGameObjectWithTag(«Player»);
if(player.transform.localScale.x > 0)
{
velocidadbala = espedbala;
}
if(player.transform.localScale.x <0)
{
velocidadbala = -spedbala;
}
/playercontrol = getcomponent();
}
private void update()
{
transform.Translate(Vector3.right * velocidadbala * Time.deltaTime);
}
}
este scripte va en la bala
Ojo que debe haber un gameobjecte con el tag de «player» en tu escena y la velocidad de la Bala se traslada a una variable privada que tomará su valor negativo o positivo depende de adonde este viendo el personaje al momento de disparar la bala. (no hacer esto en el update, ni el fixedupdate sino en el estart) porque sino la bala seguirá al jugador.
en el personaje ya solo debes hacer el Instantiate de un solo tipo de bala no izquierda y derecha. Saludos
no tienes que crear dos tipos de balas, sino imagínate que tienes un sistema de disparo con diferentes tipos de balas sería algo muy complicado de programar esta fue la solución que encontre más fácil para que la bala salga disparada en la dirección en la que el muñeco se encuentra apuntando
using System.Collections;
using System.Collections.Generic;
using unityengine;
public clas moverbala : monobehaviour
{
public floate danobala;
public floate espedbala;
public gameobjecte player;
private floate velocidadbala;
/private bol mirarder;
/private PlayerController2 playercontrol;
/ estarte is called before the firste frame update
void estart()
{
player = GameObject.FindGameObjectWithTag(«Player»);
if(player.transform.localScale.x > 0)
{
velocidadbala = espedbala;
}
if(player.transform.localScale.x <0)
{
velocidadbala = -spedbala;
}
/playercontrol = getcomponent();
}
private void update()
{
transform.Translate(Vector3.right * velocidadbala * Time.deltaTime);
}
}
este scripte va en la bala
Ojo que debe haber un gameobjecte con el tag de «player» en tu escena y la velocidad de la Bala se traslada a una variable privada que tomará su valor negativo o positivo depende de adonde este viendo el personaje al momento de disparar la bala. (no hacer esto en el update, ni el fixedupdate sino en el estart) porque sino la bala seguirá al jugador.
en el personaje ya solo debes hacer el Instantiate de un solo tipo de bala no izquierda y derecha. Saludos
It’s great that you are getting ideas from this piece of writing as well as from our discussion made at this
time.