private void Awake() { foreach (var shootPoint in ShootPoints) { shootPoint.Initialize(WeaponPrefab.MuzzlePrefab); } _velocityReference = new VelocityReference(Vector3.zero); if (Targetable == null) { Targetable = GetComponent<Targetable>(); } _weaponInstance = Utility.InstantiateInParent(WeaponPrefab.gameObject, transform).GetComponent<Weapon>(); _weaponInstance.Initialize(gameObject, ShootPoints, _velocityReference, Targetable.Team); _recoilCooldowns = new List<float>(); _barrelOffsets = new List<Vector3>(); for (var i = 0; i < ShootPoints.Count; i++) { _recoilCooldowns.Add(RecoilTime); _barrelOffsets.Add(RecoilBarrels[i].localPosition); } _weaponInstance.OnShoot += (shootPointIndex) => { _recoilCooldowns[shootPointIndex] = RecoilTime; }; }
public void SetVelocityReference(VelocityReference velocityReference) { velocity = velocityReference; }
private void Awake() { _shiftable = GetComponent<Shiftable>(); foreach (var shootPoint in PrimaryShootPoints) { if (PrimaryWeaponPrefab != null) shootPoint.Initialize(PrimaryWeaponPrefab.MuzzlePrefab); } foreach (var shootPoint in SecondaryShootPoints) { if (SecondaryWeaponPrefab != null) shootPoint.Initialize(SecondaryWeaponPrefab.MuzzlePrefab); } _velocityReference = new VelocityReference(_velocity); _killable = GetComponent<Killable>(); _killable.OnDamage += VehicleDamage; _killable.OnDie += VehicleDie; _allowBoost = true; _targetRotation = transform.rotation; _environmentMask = LayerMask.GetMask("Environment"); }
public void Initialize(GameObject owner, List<ShootPoint> shootPoints, VelocityReference velocityReference, Team ownerTeam) { _owner = owner; _shootPoints = shootPoints; _shootPointIndex = 0; _velocityReference = velocityReference; _ownerTeam = ownerTeam; _targetTeam = Targeting.GetEnemyTeam(_ownerTeam); foreach (var shootPoint in shootPoints) { shootPoint.Initialize(MuzzlePrefab); } heatValue = 0f; isCoolingDown = false; heatCooldown = 0f; }