Unity System strzelania

using UnityEngine;

public class Bullet : MonoBehaviour
{
    int _power;
    int _speed;
    Vector3 _dir;

    private void Start()
    {
        Destroy(gameObject, 2);
    }

    public void SetBullet(int power, int speed)
    {
        _power = power; 
        _speed = speed;
        _dir = Vector3.left;
    }

    public void SetBullet(int power, int speed, Color color)
    {
        _power = power;
        _speed = speed;
        _dir = Vector3.right;
        gameObject.GetComponent<SpriteRenderer>().color = color;
    }

    void Update()
    {
        //transform.position += (-transform.right * Time.deltaTime * 3);
        transform.Translate(Time.deltaTime * _speed * _dir);
    }


    private void OnTriggerEnter2D(Collider2D collision)
    {
        //IDamagable target = collision.gameObject.GetComponent<IDamagable>();
        Hp target = collision.gameObject.GetComponent<Hp>();
        if(target != null)
        {
            target.TakeDamage(_power);
        }
        Destroy(gameObject);
    }

}

Shooting functionality


using System;
using UnityEngine;

public class PlayerShooting : MonoBehaviour
{
    [SerializeField] GameObject _bullet;
    [SerializeField] Transform _aim;
    [SerializeField] int _power;
    [SerializeField] int _ammo;
    [SerializeField] int _bulletSpeed;
    Player player;

    public static event Action<int> AmmoChange;
    public void Awake()
    {
        player = GetComponent<Player>();
    }

    void Start()
    {
        UpdateAmmoUI();
    }

    public void Attack()
    {
        if (_ammo > 0)
        {
            _ammo--;
            UpdateAmmoUI();
            Bullet bullet = Instantiate(_bullet, _aim.position, gameObject.transform.rotation).GetComponent<Bullet>();
            bullet.SetBullet(_power, _bulletSpeed, player.PlayerColor);
        }
    }

    public void AddAmmo(int ammo)
    {
        _ammo += ammo;
        UpdateAmmoUI();
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Attack();
        }
    }

    void UpdateAmmoUI()
    {
        AmmoChange?.Invoke(_ammo);
    }
}

Scroll to Top