/* methods */ public void initialize() { /* initial angle is random */ targetAngle = angle = (floatRandomRange(0.0f, 360.0f) / 360.0f) * 2.0f * 3.1416f; /* time to live */ timeToLive = floatRandomRange(minTTL, maxTTL); linearSpeed = floatRandomRange(minLinearSpeed, maxLinearSpeed); timeToVeer = floatRandomRange(minTimeToVeer, maxTimeToVeer); elapsedTime = 0.0f; ttlElapsedTime = 0.0f; state = WhirlwindState.starting; frame = 0; veerElapsedTime = 0.0f; SpriteMat = SpriteQuad.GetComponent <Renderer> ().material; sr = SpriteQuad.GetComponent <SpriteRenderer> (); /*SpriteMat.SetFloat("_Mode", 2); * SpriteMat.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One); * SpriteMat.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero); * SpriteMat.SetInt("_ZWrite", 1); * SpriteMat.EnableKeyword("_ALPHATEST_ON"); * SpriteMat.DisableKeyword("_ALPHABLEND_ON"); * SpriteMat.DisableKeyword("_ALPHAPREMULTIPLY_ON"); * //SpriteMat.renderQueue = 2450;*/ //SpriteMat.mainTexture = start [0]; sr.sprite = start [0]; rigidBody = this.GetComponent <Rigidbody> (); initialized = true; if (freezer == null) { freezer = GameObject.Find("Freezer").GetComponent <Freezer> (); } }
void OnTriggerEnter(Collider other) { if (state == WhirlwindState.dying) { return; } if (other.tag != "Player") { return; } else { parent.frozen = true; } // tell the player to spawn shadow. Will return bool value // if player.spawnShadow() returns true, continue spawning the shadow // otherwise, return doing nothing if (!other.gameObject.GetComponent <PlayerScript> ().spawnShadow()) { return; } string lvl = parent.level.locationName.Substring(0, 6); string key = lvl + "SpawnedShadows"; int nShadows = parent.level.retrieveIntValue(key); int control, strength; control = shadowSpawnController.getControl(); strength = shadowSpawnController.getStrength(); if (nShadows < 4) { shadowStringBank = shadowStringBanks.bank [nShadows]; redEyesStringBank = redEyesStringBanks.bank [nShadows]; GameObject newShadow; newShadow = (GameObject)Instantiate(shadowPrefab, other.gameObject.transform.position + new Vector3(0, 0.0f, 0), Quaternion.Euler(0, 0, 0)); // check spawn direction bool rightOK = false; bool leftOK = false; RaycastHit hit; rightOK = !Physics.Raycast(other.gameObject.transform.position, Vector3.right, 10.0f); leftOK = !Physics.Raycast(other.gameObject.transform.position, Vector3.left, 10.0f); if (leftOK && (!rightOK)) { newShadow.GetComponent <Shadow> ().spawnDirection = -1.0f; } shadowStringBank.rosetta = rosetta; placesStringBank.rosetta = rosetta; datesStringBank.rosetta = rosetta; string sssId = shadowStringBank.getNextStringId(); string sss = shadowStringBank.getNextString(); string pl = placesStringBank.getNextStringId(); pl = placesStringBank.getNextString(); string dt = datesStringBank.getNextStringId(); dt = datesStringBank.getNextString(); shadowSpawnController.phrase.setText(sss); shadowSpawnController.phrase.fadeIn(); shadowSpawnController.phrase.fadeOut(5.0f); shadowSpawnController.dates.setText(dt); shadowSpawnController.dates.fadeIn(); shadowSpawnController.dates.fadeOut(5.0f); shadowSpawnController.places.setText(pl); shadowSpawnController.places.fadeIn(); shadowSpawnController.places.fadeOut(5.0f); if (sssId.Contains("Familia")) { shadowSpawnController.iconAnimation [iconFamily].resetAnimation(); shadowSpawnController.iconFader[iconFamily].fadeIn(); shadowSpawnController.iconFader[iconFamily].fadeOut(5.0f); } if (sssId.Contains("Amigos")) { shadowSpawnController.iconAnimation [iconFriends].resetAnimation(); shadowSpawnController.iconFader[iconFriends].fadeIn(); shadowSpawnController.iconFader[iconFriends].fadeOut(5.0f); } if (sssId.Contains("Pareja")) { shadowSpawnController.iconAnimation [iconWork].resetAnimation(); shadowSpawnController.iconFader[iconCouple].fadeIn(); shadowSpawnController.iconFader[iconCouple].fadeOut(5.0f); } if (sssId.Contains("Trabajo")) { shadowSpawnController.iconAnimation [iconWork].resetAnimation(); shadowSpawnController.iconFader[iconWork].fadeIn(); shadowSpawnController.iconFader[iconWork].fadeOut(5.0f); } newShadow.GetComponent <Shadow> ().thoughtTextPrefab = thoughtTextPrefab; newShadow.GetComponent <Rigidbody> ().velocity = new Vector3(0, 0, 0); newShadow.GetComponent <Shadow> ().initialize(); newShadow.GetComponent <Shadow> ().eyesPrefab = redeyesPrefab; redEyesStringBank.rosetta = rosetta; newShadow.GetComponent <Shadow> ().id = nShadows; newShadow.GetComponent <Shadow> ().redEyesStringBank = redEyesStringBank; newShadow.GetComponent <Shadow> ().rosetta = rosetta; shadowSpawnController.addShadow(newShadow.GetComponent <Shadow> ()); parent.level.storeIntValue(key, ++nShadows); GameObject newCGaugeGO; GameObject newSGaugeGO; newCGaugeGO = (GameObject)Instantiate(shadowSpawnController.csGaugePrefab, other.gameObject.transform.position + new Vector3(-2.0f, 5.8f, 0), Quaternion.Euler(0, 0, 0)); newSGaugeGO = (GameObject)Instantiate(shadowSpawnController.csGaugePrefab, other.gameObject.transform.position + new Vector3(2.0f, 5.8f, 0), Quaternion.Euler(0, 0, 0)); ShadowPowerIndicator con = newCGaugeGO.GetComponent <ShadowPowerIndicator> (); ShadowPowerIndicator str = newSGaugeGO.GetComponent <ShadowPowerIndicator> (); con.initialize(true, control); str.initialize(false, strength); con.transform.SetParent(newShadow.transform); str.transform.SetParent(newShadow.transform); con.transform.localScale = new Vector3(2, 2, 2); str.transform.localScale = new Vector3(2, 2, 2); } this.state = WhirlwindState.dying; }
new void Update() { if (freezer == null) { freezer = GameObject.Find("Freezer").GetComponent <Freezer> (); } if (freezer.frozen) { return; } elapsedTime += Time.deltaTime; if (state == WhirlwindState.starting) { if (elapsedTime > (1.0f / animationSpeed)) { if (frame < start.Length) { sr.sprite = start [frame++]; } else { state = WhirlwindState.moving; frame = 0; } elapsedTime = 0.0f; } } if (state == WhirlwindState.moving) { veerElapsedTime += Time.deltaTime; if (veerElapsedTime > timeToVeer) { veerElapsedTime = 0.0f; timeToVeer = floatRandomRange(minTimeToVeer, maxTimeToVeer); targetAngle = (floatRandomRange(0.0f, 360.0f) / 360.0f) * 2.0f * 3.1416f; } if (elapsedTime > (1.0f / animationSpeed)) { elapsedTime = 0.0f; if (frame < main.Length) { sr.sprite = main [frame]; frame = (frame + 1) % main.Length; } } if (!parent.frozen) { ttlElapsedTime += Time.deltaTime; } if (ttlElapsedTime > timeToLive) { state = WhirlwindState.dying; frame = 0; } } if (state == WhirlwindState.dying) { if (elapsedTime > (1.0f / animationSpeed)) { elapsedTime = 0.0f; if (frame < end.Length) { sr.sprite = end [frame++]; } else { Destroy(this.gameObject); } } } if (angle < targetAngle) { angle += angleSpeed * Time.deltaTime; if (angle > targetAngle) { angle = targetAngle; } } if (angle > targetAngle) { angle -= angleSpeed * Time.deltaTime; if (angle < targetAngle) { angle = targetAngle; } } }