// Akan dipanggil ketika objek lain ber-collider (bola) bersentuhan dengan dinding. void OnTriggerEnter2D(Collider2D anotherCollider) { // Jika objek tersebut bernama "Ball": if (anotherCollider.name == "Ball") { // Tambahkan skor ke pemain player.IncrementScore(); // Jika skor pemain belum mencapai skor maksimal... if (player.Score < gameManager.maxScore) { // ...restart game setelah bola mengenai dinding. anotherCollider.gameObject.SendMessage("RestartGame", 2.0f, SendMessageOptions.RequireReceiver); } } // Ketika berabrakan dengan power if (anotherCollider.gameObject.name == "Buff") { PowerMovement target = anotherCollider.gameObject.GetComponent <PowerMovement>(); target.ResetBall(); gameManager.StartCoroutine(gameManager.BuffCycle()); } if (anotherCollider.gameObject.name == "Debuff") { PowerMovement target = anotherCollider.gameObject.GetComponent <PowerMovement>(); target.ResetBall(); gameManager.StartCoroutine(gameManager.DebuffCycle()); } }
// Method me-spawn power void SpawnPower(PowerMovement target, float speed) { float yForce = Random.Range(-0.8f, 0.8f); float xForce = Mathf.Sqrt(1 - yForce * yForce); float leftOrRight = Random.Range(0f, 2f); if (leftOrRight > 1) { xForce *= -1; } target.gameObject.SetActive(true); target.gameObject.transform.position = Vector3.zero; target.rb2D.AddForce(new Vector2(xForce, yForce) * speed); }