public void ShootBomb(Vector2 dir, Vector2 spawn_pos) { if (Arcane.singleton.SafeTake(ap_cost)) { GameObject obj = PoolManager.Spawn(bomb, spawn_pos, Quaternion.identity); SpawnMuzzleFlash(redFlash, spawn_pos, QuickMaths.VectorToAngle(dir.x, dir.y)); obj.GetComponent <BombController>().damage = Random.Range(MinDmg(), MaxDmg() + 1); //obj.GetComponent<MissileController>().damage = Random.Range(MinDmg(), MaxDmg() + 1); ActionCamera.singleton.StartShake(.05f, .065f); switch (rune1) { case Rune.Tremendous: obj.AddComponent <Tremendous>(); break; case Rune.Bounce: obj.AddComponent <Bounce>(); break; case Rune.Gas: obj.AddComponent <Gas>(); break; } switch (rune2) { case Rune.Tremendous: obj.AddComponent <Tremendous>(); break; case Rune.Bounce: obj.AddComponent <Bounce>(); break; case Rune.Gas: obj.AddComponent <Gas>(); break; } if (rune1 == Rune.Tremendous || rune2 == Rune.Tremendous) { obj.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f); for (int i = 0; i < obj.transform.childCount; i++) { obj.transform.GetChild(i).localScale = new Vector3(1.5f, 1.5f, 1.5f); } } else { obj.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f); for (int i = 0; i < obj.transform.childCount; i++) { obj.transform.GetChild(i).localScale = new Vector3(1f, 1f, 1f); } } obj.GetComponent <Rigidbody2D>().AddForce(dir * speed); } }
/// <summary> /// Converts joystick vector to rotation and updates the rotation of rotation_joint /// </summary> /// void RotatePlayerAim() { Vector2 mouseDir = (Camera.main.ScreenToWorldPoint(Input.mousePosition) - rotation_joint.transform.position).normalized; float angle = QuickMaths.VectorToAngle(mouseDir.x, mouseDir.y); rotation_joint.transform.localEulerAngles = new Vector3(rotation_joint.transform.localEulerAngles.x, rotation_joint.transform.localEulerAngles.y, angle - 90); }
Vector2 ShootDir() { Vector2 mouseDir = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector2 shootDir = (mouseDir - (Vector2)spawn_point.position).normalized; float angle = QuickMaths.VectorToAngle(shootDir.x, shootDir.y); angle = angle + Random.Range(-5f, 5f); shootDir = QuickMaths.AngleToVector(angle).normalized; return(shootDir); }
public void ShootMissile(Vector2 dir, Vector2 spawn_pos) { if (Arcane.singleton.SafeTake(ApCost())) { GameObject obj = PoolManager.Spawn(missile, spawn_pos, Quaternion.identity); obj.GetComponent <MissileController>().damage = Random.Range(min_dmg, max_dmg + 1); ActionCamera.singleton.StartShake(.05f, .04f); if (rune1 == Rune.BitterCold || rune2 == Rune.BitterCold) { SpawnMuzzleFlash(missleBlueFlash, spawn_pos, QuickMaths.VectorToAngle(dir.x, dir.y)); } else { SpawnMuzzleFlash(missleRedFlash, spawn_pos, QuickMaths.VectorToAngle(dir.x, dir.y)); } switch (rune1) { case Rune.BitterCold: obj.AddComponent <BitterCold>(); break; case Rune.Nirvana: obj.AddComponent <Nirvana>(); break; case Rune.Split: obj.AddComponent <Split>(); break; } switch (rune2) { case Rune.BitterCold: obj.AddComponent <BitterCold>(); break; case Rune.Nirvana: obj.AddComponent <Nirvana>(); break; case Rune.Split: obj.AddComponent <Split>(); break; } obj.GetComponent <Rigidbody2D>().AddForce(dir * speed); } }