Exemple #1
0
    public override void Primary(IWeaponArgsHolder holder)
    {
        if (!canUse || !gameObject.activeInHierarchy)
        {
            return;
        }

        Shoot(holder);
    }
Exemple #2
0
    public override void Primary(IWeaponArgsHolder holder)
    {
        if (!canUse)
        {
            return;
        }

        DamageTrigger(.15f);
        WaitCD();
    }
Exemple #3
0
    private void Shoot(IWeaponArgsHolder holder)
    {
        if (!gameObject.activeInHierarchy)
        {
            return;
        }

        if (bulletSupply == null)
        {
            bulletSupply = holder.GetAmmoSupply();
        }

        UpdateAmmo();
        WaitCD();

        if (ammoItems.Count <= 0)
        {
            return;
        }

        WeaponArgs weaponArgs = holder.GetWeaponArgs();

        ammoItems.Peek().Item.Amount--;

        for (int i = 0; i < numOfProjectiles; i++)
        {
            float x = Random.Range(-inAccuracy, inAccuracy) / 150;
            float y = Random.Range(-inAccuracy, inAccuracy) / 150;

            Vector2 offset       = new Vector2(x, y);
            Vector2 newDirection = (Vector2)weaponArgs.ray.direction + offset;

            WeaponArgs shootArgs         = new WeaponArgs(new Ray(weaponArgs.ray.origin, newDirection), mask, weaponArgs.objectsToIgnore);
            LineEffect createdLineEffect = lineEffectPool.Instantiate(transform.position, Quaternion.identity);
            createdLineEffect.Setup(firePoint.position, shootArgs.hit.point, lineColor, lineWidth, lineLifeTime);

            shootArgs.HitDamageable?.Damage(damage);
        }
    }
Exemple #4
0
 public abstract void Primary(IWeaponArgsHolder holder);