Пример #1
0
        public override void Launch(Rigidbody projectile, ProjectileInfo projectileInfo)
        {
            projectile.useGravity = false;
            var direction = (projectileInfo.TargetPosition - projectileInfo.StartPosition).normalized;

            projectile.transform.rotation = Quaternion.LookRotation(direction);
            projectile.velocity           = direction * StartSpeed;
        }
Пример #2
0
        public override void Launch(Rigidbody projectile, ProjectileInfo projectileInfo)
        {
            projectile.useGravity = true;

            if (!TryGetStartVelocity(projectileInfo.StartPosition, projectileInfo.TargetPosition, StartAngle,
                                     out var startVelocity))
            {
                startVelocity = StartSpeed * startVelocity.normalized;
            }

            projectile.velocity = startVelocity;
        }
Пример #3
0
        public bool Launch(Launcher launcher, ProjectileInfo projectileInfo)
        {
            if (!launcher.CanShoot)
            {
                return(false);
            }

            var projectile = _projectilePools[launcher.Config].GetObject();

            projectile.Init(projectileInfo);
            projectile.Hit += OnHit;
            projectile.transform.position = launcher.LaunchPoint.position;
            projectile.transform.rotation = launcher.LaunchPoint.rotation;
            projectile.gameObject.SetActive(true);

            projectileInfo.StartPosition = launcher.LaunchPoint.position;
            launcher.Launch(projectile.Rigidbody, projectileInfo);

            return(true);
        }
Пример #4
0
 public void Launch(Rigidbody projectile, ProjectileInfo projectileInfo)
 {
     Config.Launch(projectile, projectileInfo);
     _lastShotTime = Time.time;
 }
Пример #5
0
 public abstract void Launch(Rigidbody projectile, ProjectileInfo projectileInfo);
Пример #6
0
 public void Init(ProjectileInfo projectileInfo)
 {
     Info = projectileInfo;
 }