private void ShootFlame(float angle) { // Shoot a flame at `angle` degrees angle += 90 * (faceRight ? -1 : 1); FlameProjectile flame = Instantiate(flameProjectilePrefab) as FlameProjectile; flame.transform.position = transform.position - new Vector3(0f, 0.5f, 0f); if (faceRight) { flame.transform.position = flame.transform.position + new Vector3(1f, 0f, 0f); flame.transform.localScale = new Vector3(-1f, 1f, 1f); } else { flame.transform.position = flame.transform.position - new Vector3(1f, 0f, 0f); } flame.friendly = friendly; Vector2 direction = Quaternion.AngleAxis(angle, Vector3.forward) * Vector2.up; flame.rigidbody2D.velocity = direction * 10f; }
public void StartSwing() { collider.enabled = true; AudioManager.Instance.PlaySoundWithParent("swoosh", ESoundChannel.SFX, gameObject); if (Time.time >= nextProjTime) { FlameProjectile currFlame = Instantiate(FlameProjectilePrefab, ProjectilePosition); Player player = Player.Instance; Camera camera = player.camera; Vector3 forward = camera.transform.forward; Ray ray = new Ray(camera.transform.position + forward * MinDistance, forward); RaycastHit hit; Vector3 aimPoint = Vector3.zero; if (Physics.Raycast(ray, out hit, MaxDistance, AimLayer)) { aimPoint = hit.point; } else { aimPoint = camera.transform.position + forward * MaxDistance; } currFlame.transform.forward = aimPoint - currFlame.transform.position; currFlame.Impulse = ProjectileImpulse; currFlame.LifeTime = 20f; currFlame.Damage = ProjectileDamage; currFlame.Knockback = this.Knockback; currFlame.RigidbodyKnockback = this.RigidbodyKnockback; currFlame.Fire(); nextProjTime = Time.time + ProjectileReloadTime; } }
public void Shoot() { int direction = GetAttackDirection(); Vector3 createdPositon = GetCreatePosition(); bool isCreated = GetIsCreated(); // Set direction int xDir = 0; int yDir = 0; int rotation = 0; switch (direction) { case 0: xDir = -1; break; case 1: xDir = -1; yDir = 1; rotation = -45; break; case 2: yDir = 1; rotation = -90; break; case 3: xDir = 1; yDir = 1; rotation = -135; break; case 4: xDir = 1; rotation = 180; break; case 5: xDir = 1; yDir = -1; rotation = 135; break; case 6: xDir = 0; yDir = -1; rotation = 90; break; case 7: xDir = -1; yDir = -1; rotation = 45; break; } if (!IsHasEnoughEnergy(enerygyPerSpecialAttack)) { return; } ReduceEnergy(enerygyPerSpecialAttack); GameObject go = ObjectPooler.Instance.FetchGO("FireProjectile"); FlameProjectile firep = go.GetComponent <FlameProjectile>(); firep.transform.position = createdPositon; // firep.transform.SetParent(this.specialAttackPosition); firep.Restart(); firep.SetRotation(rotation); firep.SetMissileDirection(xDir, yDir); }