Jump to content
UnitySpain
Kari

Disparo con ángulos

Recommended Posts

Hola, he estado  trabajando en una nave que rota su posición con el mouse, y debe disparar con el click.

Este es el código del mouse:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SeguirMouse : MonoBehaviour {

	void Start () {
		
	}
	
	void Update () {
		Seguir ();
	}

	public void Seguir() {
		Vector3 mousePos = Input.mousePosition;
		mousePos = Camera.main.ScreenToWorldPoint (mousePos);

		Vector2 direction = new Vector2 (
			                    mousePos.x - transform.position.x,
			                    mousePos.y - transform.position.y
		                    );
		transform.up = direction;
	}

Y este el de la instation de las balas

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Shoot : MonoBehaviour {

	public GameObject bulletPrefab;
	public Transform bulletSpawner;

	public void PlayerShooting(){
		if(Input.GetButtonDown ("Fire1")){
			Instantiate (bulletPrefab,new Vector2(bulletSpawner.position.x,bulletSpawner.position.y),bulletSpawner.rotation);
		}
	}
	
	void Update () {
		PlayerShooting ();
	}
}

¿Saben si hay algún modo de que dispare con un velocidad dada en la dirección que el mouse apunta? He estado buscando tutoriales y ayuda pero solo he encontrado para disparar con una direccion fija. Gracias, los quiero muxo.

Share this post


Link to post
Share on other sites

al instanciar las balas has puesto que tomen la rotacion del bulletSpawner, osea que deberian aparecer rotadas en la misma direccion que el.

no se si el bullerSpawner rota con la nave.

otra cosa: en el script "seguirMouse" al final pones el "up" igual a la direcion... no se si eso esta bien... para que un objeto mire hacia un punto existe la funcion "LookAt(punto)"

otra cosa mas: en ambos scripts usas vector2 en vez de vector3, no se si vector2 vale ahi. ....la nave rota (gira) bien? la bala se instancia donde debe?

Edited by Igor

Share this post


Link to post
Share on other sites

Perdón por salirme del tema pero, ¿la línea "transform.up = direction" de verdad funciona? xD ¿La nave sigue el mouse con ese método? Suena como una alternativa bastante peculiar.

Volviendo al tema, para hacer que la bala se mueva en una cierta dirección, lo único que te faltaría sería añadir al prefab de la bala el componente Rigidbody (o Rigidbody2D si usas Physics2D) y un script a la bala tipo:

// Aquí asignas el Rigidbody2D del propio prefab
public Rigidbody2D rb;
public float velocidadDisparo;

private void Awake() {
	rb.velocity = transform.up * velocidadDisparo // a lo mejor en lugar de transform.up tiene que ser transform.forward o transform.right dependiendo de cómo quieras orientar el objeto
}

La bala se moverá constantemente con la velocidad y dirección que le asignes hasta que choque con algo o se le aplique alguna fuerza.

Otra alternativa sería ponerle un Update() que haga que se mueva a cada frame en la dirección que veas, pero no estoy seguro de cómo afectará eso a las colisiones.

Edited by Deaymon

Share this post


Link to post
Share on other sites
7 hours ago, Deaymon said:

Perdón por salirme del tema pero, ¿la línea "transform.up = direction" de verdad funciona? xD ¿La nave sigue el mouse con ese método? Suena como una alternativa bastante peculiar.

Volviendo al tema, para hacer que la bala se mueva en una cierta dirección, lo único que te faltaría sería añadir al prefab de la bala el componente Rigidbody (o Rigidbody2D si usas Physics2D) y un script a la bala tipo:


// Aquí asignas el Rigidbody2D del propio prefab
public Rigidbody2D rb;
public float velocidadDisparo;

private void Awake() {
	rb.velocity = transform.up * velocidadDisparo // a lo mejor en lugar de transform.up tiene que ser transform.forward o transform.right dependiendo de cómo quieras orientar el objeto
}

La bala se moverá constantemente con la velocidad y dirección que le asignes hasta que choque con algo o se le aplique alguna fuerza.

Otra alternativa sería ponerle un Update() que haga que se mueva a cada frame en la dirección que veas, pero no estoy seguro de cómo afectará eso a las colisiones.

Gracias! Si me funcionó! Solamente que le acertaste con lo del mouse, no lo sigue con mucha exactitud. Ya vere como lo arreglo. :)

Share this post


Link to post
Share on other sites

×
×
  • Create New...