public override void Primary(IWeaponArgsHolder holder) { if (!canUse || !gameObject.activeInHierarchy) { return; } Shoot(holder); }
public override void Primary(IWeaponArgsHolder holder) { if (!canUse) { return; } DamageTrigger(.15f); WaitCD(); }
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); } }
public abstract void Primary(IWeaponArgsHolder holder);