Shots don´t go forward
Hi there!!!! I´m a noob right now, so...
My objective: An aeroplane has to shoot to enemies with the spacebar. / Problem: The instantiated weapons don´t go forward, they left behind. / What I´ve made: The aeroplane has a ShootPoint (create empty) located on the blades and a script with the weapon (gameobject) attached on it. And after shooting, it should have been shot more far away than the aeroplane, but no. Gets instantiated in the same position than the aeroplane, and then moves forward but with delay, not as a normal bullet.
It would be great if anyone could help me!!!! Because I don´t understand the whole code...
The Bullet´s script only has:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class BulletEnemy : MonoBehaviour { public float speed; private Rigidbody rb; private Transform bulletPrefab;
// Start is called before the first frame update
void Start()
{
//rb = GetComponent<Rigidbody>();
//rb.velocity = transform.forward * speed;
GetComponent<Rigidbody>().velocity = transform.forward * speed;
GetComponent<Rigidbody>().AddForce(transform.forward * speed);
}
Aeroplane´s script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Shooting : MonoBehaviour
{
public float speed = 200f;
private Transform player;
private Vector3 target;
public GameObject weapon;
private Rigidbody rb;
public Transform shootPoint;
private void Start()
{
player = GameObject.FindGameObjectWithTag("Enemy").transform;
//target = new Vector3(player.position.x, player.position.y);
//GetComponent<Rigidbody>().velocity = transform.up * speed;
//GetComponent<Rigidbody>().AddForce(-transform.up * speed);
//GameObject weapon = Instantiate(weapon) as GameObject;
rb = weapon.GetComponent<Rigidbody>();
rb.AddForce(transform.forward * speed);
}
void Update()
{
if (Input.GetKeyDown("space"))
{
Instantiate(weapon, shootPoint.position, shootPoint.rotation);
GetComponent<Rigidbody>().AddForce(transform.forward * speed);
}
transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);
if (transform.position.x == target.x && transform.position.y == target.y)
{
DestroyWeapon();
}
}
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Enemy"))
{
DestroyWeapon();
}
}
void DestroyWeapon()
{
Destroy(gameObject);
}
}