void Launch() { if (Target != null) { if (hasSpread) { for (int i = 0; i < spreadCount - 1; i++) { ParabolicProjectile duplicate = Instantiate(this, transform.position, Quaternion.identity); duplicate.Damage = Damage; duplicate.Target = Target; duplicate.spreadCount = 0; } } Vector3 launchVelocity = CalculateLaunchVelocity(Target); if (isRotating) { RotateToTarget(launchVelocity); } rb.velocity = launchVelocity; } }
public override void AttackAction(Unit target) { ParabolicProjectile bullet = GameObject.Instantiate(Links.links.stoneProjectile).GetComponent <ParabolicProjectile>(); bullet.Attacker = this; bullet.team = team; bullet.damage = attackDamage; bullet.lifeTime = bulletRange / bulletSpeed; bullet.speed = bulletSpeed; int mode = Random.Range(0, 4); switch (mode) { case 0: bullet.launchMode = ParabolicProjectile.LaunchMode.FixedHeight; break; case 1: bullet.launchMode = ParabolicProjectile.LaunchMode.FixedAngle; break; case 2: bullet.launchMode = ParabolicProjectile.LaunchMode.FixedSpeedHighTrajectory; break; case 3: bullet.launchMode = ParabolicProjectile.LaunchMode.FixedSpeedLowTrajectory; break; } bullet.LaunchAt(transform.position + centerHeight * Vector3.up, target.transform.position + target.centerHeight * Vector3.up); }
private void LoadAbilities() { _projectile = new ParabolicProjectile(transform); _jumpPound = gameObject.AddComponent <JumpPound>(); _walk = gameObject.AddComponent <Walk>(); _stalControl = gameObject.AddComponent <SpawnStalactites>(); _mothControl = new GameObject("SceneSpawnables").AddComponent <BossMoths>(); }
public void SpitAttack() { ParabolicProjectile projectile = Instantiate(spitBullet, spitPoint.position, Quaternion.identity) .GetComponent <ParabolicProjectile>(); projectile.throwObject = true; projectile.SetTarget(spitterAttack.Target.transform.position); }
public override void OnRelease(Vector2 aim) { aiming = false; GameObject bulletGo = Instantiate(bullet, transform.position, Quaternion.identity); parabolicProjectile = bulletGo.GetComponent <ParabolicProjectile>(); endPosition = new Vector3(currentAim.x * range, bullet.transform.position.y, currentAim.y * range) + player.position; parabolicProjectile.SetTarget(endPosition); parabolicProjectile.throwObject = true; }
private void ShowParabole(Vector3 aim) { parabolicProjectile = bullet.GetComponent <ParabolicProjectile>(); endPosition = new Vector3(aim.x * range, bullet.transform.position.y, aim.y * range) + player.position; parabolicProjectile.SetTarget(endPosition); int count = 20; Vector3[] arcArray = new Vector3[count + 1]; for (int i = 0; i <= count; i++) { arcArray[i] = ParabolaEquation.Parabole(player.position, endPosition, parabolicProjectile.height, i / (float)count); } lr.positionCount = count + 1; lr.SetPositions(arcArray); }