void Start() { initialPosition = this.transform.position; initialRotation = this.transform.rotation; routeSpheres = route.allPoints; pathLine.positionCount = lineSphereNumber; // A simple 2 color gradient with a fixed alpha of 1.0f. float alpha = 0.6f; Gradient gradient = new Gradient(); gradient.SetKeys( new GradientColorKey[] { new GradientColorKey(Color.yellow, 0.0f), new GradientColorKey(Color.red, 1.0f) }, new GradientAlphaKey[] { new GradientAlphaKey(alpha, 0.0f), new GradientAlphaKey(alpha, 0.6f) } ); pathLine.colorGradient = gradient; pathLine.widthMultiplier = 2f; /* Path drawing */ var points = new Vector3[lineSphereNumber]; for (int i = 0; i < lineSphereNumber; i++) { RaycastHit hit; if (Physics.Raycast(routeSpheres[i].transform.position + new Vector3(0, 5, 0), Vector3.down, out hit, Mathf.Infinity, 1 << 10)) { points[i] = hit.point; } } pathLine.SetPositions(points); if (frontParticle.isPlaying) { frontParticle.Stop(); } if (!backParticle.isPlaying) { backParticle.Play(); } if (leftParticle.isPlaying) { leftParticle.Stop(); } if (rightParticle.isPlaying) { rightParticle.Stop(); } state = muscleStates.landing; paused = false; startText.text = "GET READY!"; countDown = startDelay; }
IEnumerator startCountDown() { while (countDown > 0) { countDown -= Time.deltaTime; startText.text = countDown.ToString("F0"); yield return(null); } startPanel.SetActive(false); state = muscleStates.moveForward; moveRoute(); yield return(null); }
// Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.R)) { DOTween.KillAll(); this.transform.position = initialPosition; this.transform.rotation = initialRotation; state = muscleStates.landing; paused = false; startPanel.SetActive(true); startText.text = "GET READY!"; countDown = startDelay; if (frontParticle.isPlaying) { frontParticle.Stop(); } if (!backParticle.isPlaying) { backParticle.Play(); } if (leftParticle.isPlaying) { leftParticle.Stop(); } if (rightParticle.isPlaying) { rightParticle.Stop(); } } if (Input.GetKeyDown(KeyCode.Space)) { if (!paused) { DOTween.PauseAll(); } else { DOTween.PlayAll(); } paused = !paused; } if (Input.GetKeyDown(KeyCode.S)) { StartCoroutine(startCountDown()); state = muscleStates.start; } }
void uponSphereChange() { if (routeSpheres[routeIndex].tag != "air" && routeSpheres[routeIndex].tag != "preLanding") { this.transform.DOLookAt(routeSpheres[routeIndex + 1].transform.position, 1f, AxisConstraint.None); lastRotation = this.transform.rotation; } switch (routeSpheres[routeIndex].tag) { case "mountain": state = muscleStates.moveForward; if (frontParticle.isPlaying) { frontParticle.Stop(); } if (leftParticle.isPlaying) { leftParticle.Stop(); } if (rightParticle.isPlaying) { rightParticle.Stop(); } break; case "smallLeft": state = muscleStates.smallLeft; if (frontParticle.isPlaying) { frontParticle.Stop(); } if (leftParticle.isPlaying) { leftParticle.Stop(); } if (!rightParticle.isPlaying) { rightParticle.Play(); } break; case "smallRight": state = muscleStates.smallRight; if (frontParticle.isPlaying) { frontParticle.Stop(); } if (!leftParticle.isPlaying) { leftParticle.Play(); } if (rightParticle.isPlaying) { rightParticle.Stop(); } break; case "bigRight": state = muscleStates.bigRight; if (frontParticle.isPlaying) { frontParticle.Stop(); } if (!leftParticle.isPlaying) { leftParticle.Play(); } if (rightParticle.isPlaying) { rightParticle.Stop(); } break; case "bigLeft": state = muscleStates.bigLeft; if (frontParticle.isPlaying) { frontParticle.Stop(); } if (leftParticle.isPlaying) { leftParticle.Stop(); } if (!rightParticle.isPlaying) { rightParticle.Play(); } break; case "ramp": state = muscleStates.climbRamp; if (frontParticle.isPlaying) { frontParticle.Stop(); } if (leftParticle.isPlaying) { leftParticle.Stop(); } if (rightParticle.isPlaying) { rightParticle.Stop(); } break; case "air": state = muscleStates.airTime; if (frontParticle.isPlaying) { frontParticle.Stop(); } if (leftParticle.isPlaying) { leftParticle.Stop(); } if (rightParticle.isPlaying) { rightParticle.Stop(); } break; case "landingPoint": state = muscleStates.landing; if (frontParticle.isPlaying) { frontParticle.Stop(); } if (leftParticle.isPlaying) { leftParticle.Stop(); } if (rightParticle.isPlaying) { rightParticle.Stop(); } break; case "preLanding": state = muscleStates.preLanding; if (!frontParticle.isPlaying) { frontParticle.Play(); } if (leftParticle.isPlaying) { leftParticle.Stop(); } if (rightParticle.isPlaying) { rightParticle.Stop(); } break; case "flatGround": state = muscleStates.flat; if (frontParticle.isPlaying) { frontParticle.Stop(); } if (leftParticle.isPlaying) { leftParticle.Stop(); } if (rightParticle.isPlaying) { rightParticle.Stop(); } break; case "slowDown": state = muscleStates.climbRamp; if (!frontParticle.isPlaying) { frontParticle.Play(); } if (leftParticle.isPlaying) { leftParticle.Stop(); } if (rightParticle.isPlaying) { rightParticle.Stop(); } break; case "endPoint": state = muscleStates.flat; DOTween.KillAll(); if (frontParticle.isPlaying) { frontParticle.Stop(); } if (leftParticle.isPlaying) { leftParticle.Stop(); } if (rightParticle.isPlaying) { rightParticle.Stop(); } break; default: state = muscleStates.flat; if (frontParticle.isPlaying) { frontParticle.Stop(); } if (leftParticle.isPlaying) { leftParticle.Stop(); } if (rightParticle.isPlaying) { rightParticle.Stop(); } break; } routeIndex++; }