using System; using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; public class BulletScript : MonoBehaviour { public DataBullet dataBullet; private float damage; private float speed; private int ammo; public GameObject particalClash; public float lifetime = 3f; private Rigidbody rb; private Vector3 direction; private float time = 0f; private Ray ray; private RaycastHit hit; /// /// Sobald life Time vorbei ist Destroy die Bullet. /// /// Lifetime der Bullet private void die(float lifetime){ if(time > lifetime){ GameObject.Destroy(this.gameObject); } } private void CheckForColliders(){ if(Physics.Raycast(ray, out hit)){ //wenn true wird durch out in variable hit ein RayCastHit gespeichert direction = hit.point - transform.position;//Richtung in die, die Kugel fliegt } } /// /// clashPartical spawned clashPartical am EinschlagPunkt der Kugel. /// /// Die Collision mit der Bullet. public void clashPartcal(Collision collision){ ContactPoint contact = collision.GetContact(0); Instantiate(particalClash,transform.position,Quaternion.LookRotation(contact.normal)); } /// /// Wenn die Bullet etwas behrührt zerstört sie sich selbst. /// /// Die Collision mit der Bullet private void OnCollisionEnter(Collision collision){ Debug.Log(collision.gameObject.name + " UND HIER IST DER TAG: " + collision.gameObject.tag); if(collision.transform.tag == "Enemy"){ collision.transform.GetComponent().takeDamage(damage); } clashPartcal(collision); GameObject.Destroy(this.gameObject); } // Start is called before the first frame update void Start() { damage = dataBullet.damage; ammo = dataBullet.ammo; speed = dataBullet.speed; rb = this.GetComponent(); ray = Camera.main.ViewportPointToRay(new Vector3(0.5f,0.5f,0f)); CheckForColliders(); } // Update is called once per frame void Update() { rb.velocity = direction.normalized * speed; die(lifetime); time += Time.deltaTime; } }