public override void Launch(RangeWeapon weapon) { if (_missileToLaunch != null) { Ray ray = new Ray(projectileSpawnTransform.position, projectileSpawnTransform.forward); if (Physics.Raycast(ray, out RaycastHit hit, maxDistanceToHit)) { hit.collider.gameObject.HandleComponent <ITarget>(target => currentTarget = hit.transform); print(hit.collider.name); } MissileProps newMissileProps = new MissileProps { acceleration = missileProps.acceleration, rotationSpeed = missileProps.rotationSpeed, damage = weapon.rangeWeaponProps.damage, speed = weapon.rangeWeaponProps.projectileSpeed, startForce = missileProps.startForce, timeToDestroy = missileProps.timeToDestroy, timeToFly = missileProps.timeToFly, }; _missileToLaunch.Launch(currentTarget, ray, newMissileProps); _missileToLaunch = null; StartCoroutine(LoadMissileWithDelay(timeToReload)); } }
private void Die() { _timer = 0; _directionToHit = Vector3.zero; _targetToHit = null; _isAiming = false; _missileProps = null; _rb.isKinematic = true; _collider.enabled = false; MissilePool.Instance.ReturnToPool(this); }
public void Launch(Transform target, Ray ray, MissileProps missileProps, Transform parent = null) { _missileProps = missileProps; speed = _missileProps.speed; Damage = _missileProps.damage; transform.SetParent(parent); _targetToHit = target; _timeToFly = _missileProps.timeToFly; if (_targetToHit == null) { print("target is null"); _directionToHit = ray.direction; } _isAiming = true; _rb.isKinematic = false; _collider.enabled = true; _rb.AddForce(transform.forward * _missileProps.startForce, ForceMode.Impulse); // time to destroy StartCoroutine(DieWithDelay(_missileProps.timeToDestroy)); }