/* * Play note of entered ball */ private MagicBallController OnBallPlayed(GameObject gameObject) { MagicBallController magicBallController = null; // Lock target if target was null or target changed if (gameObject != null) { magicBallController = gameObject.GetComponent <MagicBallController>(); if (magicBallController != null) { // If it's not the lastest played note, play for 0.5s if (targetBall == null || targetBall != gameObject) { if (midiPlayer) { midiPlayer.AddNote(new SingleNote(baseNote + magicBallController.index, 0.5f)); Invoke("ClearTargetBall", 0.5f); // After 500ms clear target ball } targetBall = gameObject; } } } return(magicBallController); }
public void ChargeWithMagicBall(GameObject ball) { if (ball != null && ball.CompareTag("MagicBall")) { MagicBallController magicBallController = ball.GetComponent <MagicBallController>(); if (this.index >= 0 && (Mathf.Abs(this.index - magicBallController.index) == 2)) { // NOT TO-DO: condition -> C and B... B and C have no interval... // If composition is possible this.index = (this.index + magicBallController.index) / 2; } else { this.index = magicBallController.index; } // Set Magic Indicator if (this.magicIndicator) { this.magicIndicator.GetComponent <Image>().color = magicBallController.materials[this.index].color; } if (this.noteManager) { this.noteManager.GetComponent <Text>().text = magicBallController.notes[this.index]; } Destroy(ball); } }
/* * Play note of entered ball */ private MagicBallController OnBallGet(GameObject gameObject, GameObject origin) { MagicBallController magicBallController = null; if (gameObject) { magicBallController = gameObject.GetComponent <MagicBallController>(); if (origin != null) { // Move to player gameObject.transform.Translate((origin.transform.position - gameObject.transform.position) * Time.deltaTime * 2.0f, Space.World); // Charge with the ball if ((origin.transform.position - gameObject.transform.position).magnitude < 0.8f) { if (chargedIndex >= 0 && (Mathf.Abs(chargedIndex - magicBallController.index) == 2)) { // If combinaison is possible chargedIndex = (chargedIndex + magicBallController.index) / 2; } else { // Overwrite charged state chargedIndex = magicBallController.index; } Destroy(gameObject); } } } /*if (magicBallGenerator.GetComponent<MagicBallGenerator>().HasMagicBall(hit.transform.gameObject)) * { * magicBallGenerator.GetComponent<MagicBallGenerator>().RetrieveMagicBall(hit.transform.gameObject); * //magicBallController.SetRotationArround(this.transform.position); * }*/ return(magicBallController); }
void Awake() { myPC = GetComponentInParent <MagicBallController> (); }
// Update is called once per frame void Update() { if (Controller.GetTouchDown(SteamVR_Controller.ButtonMask.Touchpad)) { Vector2 cc = Controller.GetAxis(); float jiaodu = VectorAngle(new Vector2(1, 0), cc); if ((jiaodu > 0 && jiaodu < 45) || (jiaodu > -45 && jiaodu < 0) || (jiaodu < 180 && jiaodu > 135) || (jiaodu < -135 && jiaodu > -180)) { if (this.index >= 0 && this.timer <= 0) { this.midiPlayer.setNote(this.index + this.baseNote); this.timer = 1.0f; } } } if (ViveInput.GetPress(HandRole.RightHand, ControllerButton.Grip)) { // Get the ball RaycastHit hit; if (Physics.Raycast(this.transform.position, this.transform.TransformDirection(Vector3.forward), out hit)) { if (hit.transform.gameObject.CompareTag("MagicBall")) { MagicBallController magicBallController = hit.transform.gameObject.GetComponent <MagicBallController>(); Debug.Log("hit magic ball: " + hit.transform.gameObject.name); //magicBallController.SetRotationArround(new Vector3(0, 0, 0)); if (magicBallGenerator.GetComponent <MagicBallGenerator>().HasMagicBall(hit.transform.gameObject)) { magicBallGenerator.GetComponent <MagicBallGenerator>().RetrieveMagicBall(hit.transform.gameObject); //magicBallController.SetRotationArround(this.transform.position); } hit.transform.Translate((this.transform.position - hit.transform.position) * Time.deltaTime * 2.0f, Space.World); // Charge with the ball if ((this.transform.position - hit.transform.position).magnitude < 0.8f) { if (this.index >= 0 && (Mathf.Abs(this.index - magicBallController.index) == 2)) { // NOT TO-DO: condition -> C and B... B and C have no interval... // If composition is possible this.index = (this.index + magicBallController.index) / 2; } else { this.index = magicBallController.index; } // Set Magic Indicator if (this.magicIndicator) { this.magicIndicator.GetComponent <Image>().color = magicBallController.materials[this.index].color; } Destroy(hit.transform.gameObject); } } } } if (Controller.GetHairTriggerDown()) { if (this.index >= 0) { Controller.TriggerHapticPulse(2500); if (this.projectiles.Length > this.index) { GameObject projectile = Instantiate(this.projectiles[this.index], this.transform.position - new Vector3(0, 0.5f, 0), this.transform.rotation); projectile.GetComponent <ProjectileFly>().index = this.index; projectile.GetComponent <ProjectileFly>().SetTarget( GameObject.FindGameObjectWithTag("MainCamera"). GetComponent <TargetLocked>().GetTarget()); // Set magic charge to non charge this.index = -1; if (this.magicIndicator) { this.magicIndicator.GetComponent <Image>().color = Color.white; } } } else { Debug.Log("Not charged"); if (this.tipsManager) { this.timer = 3.0f; this.tipsManager.GetComponent <Text>().text = "You are not charged"; } } Debug.DrawRay(this.transform.position, this.transform.TransformDirection(Vector3.forward) * 8.0f, Color.red); Debug.Log(gameObject.name + " Trigger Press"); } RaycastHit detect_hit; if (Physics.Raycast(this.transform.position, this.transform.TransformDirection(Vector3.forward), out detect_hit)) { if (detect_hit.transform.gameObject.CompareTag("Enermy")) { int _index = detect_hit.transform.gameObject.GetComponent <PandaMove>().index; if (this.tipsManager) { this.timer = 0.5f; if (_index != -1) { this.tipsManager.GetComponent <Text>().text = "Target Panda " + GameObject.FindGameObjectWithTag("MagicBall").GetComponent <MagicBallController>().notes[_index]; } } } else if (detect_hit.transform.gameObject.CompareTag("MagicBall")) { int _index = detect_hit.transform.gameObject.GetComponent <MagicBallController>().index; if (this.tipsManager) { this.timer = 0.5f; if (_index != -1) { this.tipsManager.GetComponent <Text>().text = "Target Magic Ball " + GameObject.FindGameObjectWithTag("MagicBall").GetComponent <MagicBallController>().notes[_index]; } } } } }