I bought a endless drop game and need it to end on score. Below is the the player controller. I’d like to keep it as a float to modify later in inspector for other levels.
using UnityEngine;
using System.Collections;
public class PlayerControl : MonoBehaviour
{
private float i;
[HideInInspector]
public bool facingRight = true; // For determining which way the player is currently facing.
[HideInInspector]
public bool jump = false; // Condition for whether the player should jump.
public GameObject BoxGUI;
public GameObject PauseButton;
public float moveForce = 365f; // Amount of force added to move the player left and right.
public float maxSpeed = 5f; // The fastest the player can travel in the x axis.
public float jumpForce = 1000f; // Amount of force added when the player jumps.
public AudioClip[] taunts; // Array of clips for when the player taunts.
public float tauntProbability = 50f; // Chance of a taunt happening.
public float tauntDelay = 1f; // Delay for when the taunt should happen.
private int tauntIndex; // The index of the taunts array indicating the most recent taunt.
private Transform groundCheck; // A position marking where to check if the player is grounded.
private bool grounded = false; // Whether or not the player is grounded.
private Animator anim; // Reference to the player's animator component.
private TrailRenderer trailrender; //
[HideInInspector]
public bool isDeal; // is deal ?
public AudioClip[] audioClip; //
public GameObject Protection; //Protection
private bool isProtection;
void Awake()
{
anim = GetComponent<Animator>();
trailrender = GetComponent<TrailRenderer> ();
Protection.SetActive (false);
trailrender.enabled = false; //
}
void Update()
{
// The player is grounded if a linecast to the groundcheck position hits anything on the ground layer.
// grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));
// If the jump button is pressed and the player is grounded then the player should jump.
if(Input.GetButtonDown("Jump") && grounded)
jump = true;
}
void FixedUpdate ()
{
if(isDeal){
Destroy (gameObject.collider2D);
Destroy (gameObject.rigidbody2D);
Protection.SetActive (false);
}else{
if(Application.isEditor || Application.isWebPlayer){
// Cache the horizontal input.
float h = Input.GetAxis("Horizontal");
// print(h);
// The Speed animator parameter is set to the absolute value of the horizontal input.
anim.SetFloat("Speed", Mathf.Abs(h));
if(isProtection){
print ("isProtection");
if(h * rigidbody2D.velocity.x < maxSpeed)
// ... add a force to the player.
rigidbody2D.AddForce(Vector2.right * h * moveForce*3);
}else{
if(h * rigidbody2D.velocity.x < maxSpeed)
// ... add a force to the player.
rigidbody2D.AddForce(Vector2.right * h * moveForce);
}
// If the player is changing direction (h has a different sign to velocity.x) or hasn't reached maxSpeed yet...
// If the player's horizontal velocity is greater than the maxSpeed...
if(Mathf.Abs(rigidbody2D.velocity.x) > maxSpeed)
// ... set the player's velocity to the maxSpeed in the x axis.
rigidbody2D.velocity = new Vector2(Mathf.Sign(rigidbody2D.velocity.x) * maxSpeed, rigidbody2D.velocity.y);
// If the input is moving the player right and the player is facing left...
if(h > 0 && !facingRight)
// ... flip the player.
Flip();
// Otherwise if the input is moving the player left and the player is facing right...
else if(h < 0 && facingRight)
// ... flip the player.
Flip();
}else{
if(PlayerPrefs.GetString("isGravity") == "ture"){ //判断是重力感应还是手指触摸
anim.SetFloat("Speed", Mathf.Abs(Input.acceleration.x));
if(isProtection){
if(Input.acceleration.x * rigidbody2D.velocity.x < maxSpeed)
// ... add a force to the player.
rigidbody2D.AddForce(Vector2.right * Input.acceleration.x * moveForce*3);
}else{
if(Input.acceleration.x * rigidbody2D.velocity.x < maxSpeed)
// ... add a force to the player.
rigidbody2D.AddForce(Vector2.right * Input.acceleration.x * moveForce);
}
// If the player's horizontal velocity is greater than the maxSpeed...
if(Mathf.Abs(rigidbody2D.velocity.x) > maxSpeed)
// ... set the player's velocity to the maxSpeed in the x axis.
rigidbody2D.velocity = new Vector2(Mathf.Sign(rigidbody2D.velocity.x) * maxSpeed, rigidbody2D.velocity.y);
// If the input is moving the player right and the player is facing left...
if(Input.acceleration.x > 0 && !facingRight)
// ... flip the player.
Flip();
// Otherwise if the input is moving the player left and the player is facing right...
else if(Input.acceleration.x < 0 && facingRight)
// ... flip the player.
Flip();
}else{
if (Input.touchCount > 0)//如果存在Touch事件
{
if(Input.GetTouch(0).position.x > Screen.width/2){
if(i<0.99f){
i += 0.1f;
}
}else{
if(i>-0.99f){
i -= 0.1f;
}
}
}else{
i = 0;
}
anim.SetFloat("Speed", Mathf.Abs(i));
// If the player is changing direction (h has a different sign to velocity.x) or hasn't reached maxSpeed yet...
if(isProtection){
if(i * rigidbody2D.velocity.x < maxSpeed)
// ... add a force to the player.
rigidbody2D.AddForce(Vector2.right * i * moveForce*3);
}else{
if(i * rigidbody2D.velocity.x < maxSpeed)
// ... add a force to the player.
rigidbody2D.AddForce(Vector2.right * i * moveForce);
}
// If the player's horizontal velocity is greater than the maxSpeed...
if(Mathf.Abs(rigidbody2D.velocity.x) > maxSpeed)
// ... set the player's velocity to the maxSpeed in the x axis.
rigidbody2D.velocity = new Vector2(Mathf.Sign(rigidbody2D.velocity.x) * maxSpeed, rigidbody2D.velocity.y);
// If the input is moving the player right and the player is facing left...
if(i > 0 && !facingRight)
// ... flip the player.
Flip();
// Otherwise if the input is moving the player left and the player is facing right...
else if(i < 0 && facingRight)
// ... flip the player.
Flip();
}
}
}
}
void Flip ()
{
// Switch the way the player is labelled as facing.
facingRight = !facingRight;
// Multiply the player's x local scale by -1.
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
public IEnumerator Taunt()
{
// Check the random chance of taunting.
float tauntChance = Random.Range(0f, 100f);
if(tauntChance > tauntProbability)
{
// Wait for tauntDelay number of seconds.
yield return new WaitForSeconds(tauntDelay);
// If there is no clip currently playing.
if(!audio.isPlaying)
{
// Choose a random, but different taunt.
tauntIndex = TauntRandom();
// Play the new taunt.
audio.clip = taunts[tauntIndex];
audio.Play();
}
}
}
int TauntRandom()
{
// Choose a random index of the taunts array.
int i = Random.Range(0, taunts.Length);
// If it's the same as the previous taunt...
if(i == tauntIndex)
// ... try another random taunt.
return TauntRandom();
else
// Otherwise return this index.
return i;
}
void OnCollisionEnter2D(Collision2D coll) {
if (isDeal || isProtection) {
} else {
if(coll.collider.tag == "Enemy"){
anim.SetBool("Deal",true);
// print("enemy dal");
isDeal = true;
StartCoroutine("GameOver");
}
}
}
void OnTriggerEnter2D(Collider2D collider) {
if (isDeal) {
} else {
if(collider.name == "dealLine"){
anim.SetBool("Deal",true);
//print("enemy dal");
isDeal = true;
StartCoroutine("GameOver");
}
if(collider.name == "Strong(Clone)"){
trailrender.enabled = true; //
Destroy(collider.gameObject);
StartCoroutine("trailrenderFalse");
}
}
}
IEnumerator trailrenderFalse(){
isProtection = true;
audio.clip = audioClip[1];
audio.Play();
Protection.SetActive (true);
yield return new WaitForSeconds(10);
isProtection = false;
trailrender.enabled = false;
audio.clip = audioClip[2];
audio.Play();
Protection.SetActive (false);
}
IEnumerator GameOver(){
audio.clip = audioClip[0];
audio.loop = false;
audio.Play();
PauseButton.SetActive(false);
yield return new WaitForSeconds(3);
BoxGUI.SetActive(true);
}
}