private void initializeVariables() { kameEffect.transform.rotation = Quaternion.LookRotation(GameManager.player.transform.forward, GameManager.player.transform.up); GameObject[] planets = GravityAttractorsManager.getGravityAttractors(); float smallestDistance = float.PositiveInfinity; foreach (GameObject planet in planets) { if (Vector3.Distance(planet.transform.position, GameManager.player.transform.position) < smallestDistance) { closestPlanetCenter = planet.transform.position; smallestDistance = Vector3.Distance(planet.transform.position, GameManager.player.transform.position); } } isFinished = false; //kameEffect.SetActive (true); kameEffect.SetActive(false); kameCore.SetActive(true); kameCore.GetComponent <ParticleSystem>().Play(); startPosition = ((GameManager.player.GetComponent <Rigidbody> ().worldCenterOfMass + (GameManager.player.transform.up * 0.15f))) + (kameEffect.transform.forward * 0.4f); kameEffect.transform.position = startPosition; kameCore.transform.position = startPosition; kameCore.transform.forward = kameEffect.transform.forward; timer = 0f; objectsCollided = 0; isCharged = false; }
//2. Initializes the kame and shows the direction line (Called when the animation starts) private void animationStarted() { chargeTimer = 0f; kameEffect.transform.rotation = Quaternion.LookRotation(GameManager.player.transform.forward, GameManager.player.transform.up); //Find closest planet GameObject[] planets = GravityAttractorsManager.getGravityAttractors(); float smallestDistance = float.PositiveInfinity; foreach (GameObject planet in planets) { if (Vector3.Distance(planet.transform.position, GameManager.player.transform.position) < smallestDistance) { closestPlanet = planet; smallestDistance = Vector3.Distance(planet.transform.position, GameManager.player.transform.position); } } //Initialize elements hasHitGround = false; isFinished = false; kameEffect.SetActive(false); kameCore.SetActive(true); kameCore.GetComponent <ParticleSystem>().Play(); startPosition = ((GameManager.player.GetComponent <Rigidbody> ().worldCenterOfMass + (GameManager.player.transform.up * 0.15f))) + (kameEffect.transform.forward * 0.4f); kameEffect.transform.position = startPosition; kameCore.transform.position = startPosition; kameCore.transform.forward = kameEffect.transform.forward; objectsCollided = 0; enemiesHit = new List <GameObject> (0); transform.parent = closestPlanet.transform; if (!elementAttack.Equals(ElementType.None)) { elementalParticleOnCharge.SetActive(true); elementalParticleOnCharge.GetComponent <ParticleSystem>().Play(); Material material = AttackElementsManager.getElement(elementAttack).material; if (material != null) { elementalParticleSystem.GetComponent <ParticleSystemRenderer>().material = material; elementalParticleOnCharge.GetComponent <ParticleSystemRenderer>().material = material; } } //Starts to update the charging up of the kame isCharged = false; isCharging = true; Util.changeTime(slowTimeProportion); isFinished = false; arrowDirection = GameManager.player.transform.forward; directionalLine.SetActive(true); directionalLine.GetComponent <LineRenderer> ().SetPosition(0, GameManager.player.GetComponent <Rigidbody>().worldCenterOfMass); directionalLine.GetComponent <LineRenderer> ().SetPosition(1, GameManager.player.GetComponent <Rigidbody>().worldCenterOfMass + (lineLength * arrowDirection.normalized)); StartCoroutine(updateCharge()); }
void Start() { disappearing = false; originalPos = transform.position; GameObject[] planets = GravityAttractorsManager.getGravityAttractors(); closestPlanetCenter = new Vector3(0f, 0f, 0f); float smallestDistance = float.PositiveInfinity; foreach (GameObject planet in planets) { float distance = Vector3.Distance(planet.transform.position, transform.position); if (distance < smallestDistance) { closestPlanetCenter = planet.transform.position; smallestDistance = distance; } } timer = Random.value; }
void Awake() { if (!separateGravityAndAir) { airDistance = gravityDistance; } GravityAttractorsManager.registerNewAttractor(this.gameObject); //We initialize the corruption if (GetComponent <PlanetCorruption>() != null) { GetComponent <PlanetCorruption>().initialize(); } athmosphere = GameObject.Instantiate(athmospherePrefab) as GameObject; athmosphere.transform.parent = transform; athmosphere.transform.position = transform.position; //We calculate the size of the athmosphere of the gravityAttractor float size = transform.GetComponent <SphereCollider> ().radius *Mathf.Max(transform.lossyScale.x, transform.lossyScale.y, transform.lossyScale.z); size += airDistance; //Athmosphere size float athmosphereSize = athmosphere.transform.GetComponent <SphereCollider> ().radius *Mathf.Max(athmosphere.transform.lossyScale.x, athmosphere.transform.lossyScale.y, athmosphere.transform.lossyScale.z); float factor = size / athmosphereSize; athmosphere.transform.localScale = new Vector3(factor * athmosphere.transform.localScale.x, factor * athmosphere.transform.localScale.y, factor * athmosphere.transform.localScale.z); GameObject athmosphereMinimap = (GameObject)GameObject.Instantiate(athmosphereMinimapPrefab); athmosphereMinimap.transform.position = new Vector3(transform.position.x, transform.position.y, Constants.MINIMAP_DISTANCE); athmosphereMinimap.transform.parent = transform; //factor = athmosphereSize / 5f; factor = size / (athmosphereMinimap.GetComponent <MeshRenderer>().bounds.size.x / 2f); athmosphereMinimap.transform.localScale = new Vector3(factor * athmosphereMinimap.transform.localScale.x, factor * athmosphereMinimap.transform.localScale.y, factor * athmosphereMinimap.transform.localScale.z); SphereCollider sphereCollider = (SphereCollider)transform.gameObject.GetComponent(typeof(SphereCollider)); sphereRadius = sphereCollider.transform.lossyScale.x * sphereCollider.radius; }
void Start() { planets = GravityAttractorsManager.getGravityAttractors(); GetComponent <Rigidbody> ().drag = drag; onStart(); }