// helper function that lands the player onto a given planet public void LandOnPlanet(GameObject planet) { // make sure that the player hasn't already landed if (isLanded == false && currentPlanet == null) { isLanded = true; canJump = true; // TODO: implement a brief delay when you land where you can't jump // clear coin combo coinCombo = 0; currentPlanet = planet.GetComponent <PlanetScript>(); playerAudio.PlayLandingSound(); // rotates and repositions the player accordingly Vector3 difference = transform.position - currentPlanet.transform.position; float radius = currentPlanet.gameObject.GetComponent <CircleCollider2D>().radius *currentPlanet.transform.lossyScale.x + GetComponent <BoxCollider2D>().size.y *transform.lossyScale.x / 2; Vector3 newDifference = difference.normalized * radius; transform.position = transform.position - difference + newDifference; RotateToPlanet(); GetComponent <Rigidbody2D>().freezeRotation = true; transform.parent = planet.transform; nearbyPlanets.Remove(currentPlanet.gameObject); } else { print("Error: cannot land on " + planet.name); } }
// helper function that lands the player onto a given planet public void LandOnPlanet(GameObject planet) { // make sure that the player hasn't already landed if (isLanded == false && currentPlanet == null) { isLanded = true; canJump = true; // TODO: implement a brief delay when you land where you can't jump canAction = false; takingAction = false; currentAntiStuckForceTime = 0f; cumulatedGravityPullForce = Vector2.zero; StartCoroutine(EnableTail(false, 1f)); // clear coin combo currentPlanet = planet.GetComponent <PlanetScript>(); playerAudio.PlayLandingSound(); // rotates and repositions the player accordingly StandOnCurrentPlanet(); RotateToCurrentPlanet(); myRigidBody.freezeRotation = true; transform.parent = planet.transform; nearbyPlanets.Remove(currentPlanet.gameObject); // TODO: clean this up if (currentPlanet.gameObject.tag == "HomePlanet" && currentPlanet.rotationSpeed != homePlanetRotationSpeed) { currentPlanet.rotationSpeed = homePlanetRotationSpeed; } } else { Debug.Log("Error: cannot land on " + planet.name); } }