using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class MouseController : MonoBehaviour {
public float jetpackForce = 75.0f;
public float forwardMovementSpeed = 3.0f;
public float forwardAddSpeed = 0.03f;
public Transform groundCheckTransform;
private bool grounded;
public LayerMask groundCheckLayerMask;
Animator animator;
public ParticleSystem jetpack;
private bool dead = false;
private uint coins = 0;
public AudioClip coinCollectSound;
public AudioSource jetpackAudio;
public AudioSource footstepsAudio;
public ParallaxScroll parallax;
public Text coinsLabel;
void Start (){
animator = GetComponent<Animator>();
}
void FixedUpdate ()
{
if(forwardMovementSpeed <= 10)
{
forwardMovementSpeed += forwardAddSpeed;
}
bool jetpackActive = Input.GetButton("Fire1");
jetpackActive = jetpackActive && !dead;
parallax.offset = transform.position.x;
if (jetpackActive)
{
GetComponent<Rigidbody2D>().AddForce(new Vector2(0, jetpackForce));
}
if(!dead){
Vector2 newVelocity = GetComponent<Rigidbody2D>().velocity;
newVelocity.x = forwardMovementSpeed;
GetComponent<Rigidbody2D>().velocity = newVelocity;
}
UpdateGroundedStatus();
AdjustJetpack (jetpackActive);
AdjustFootstepsAndJetpackSound(jetpackActive);
}
void UpdateGroundedStatus()
{
//1
grounded = Physics2D.OverlapCircle(groundCheckTransform.position, 0.1f, groundCheckLayerMask);
//2
animator.SetBool("grounded", grounded);
}
void AdjustJetpack (bool jetpackActive)
{
if(!dead){
jetpack.enableEmission = !grounded;
jetpack.emissionRate = jetpackActive ? 300.0f : 75.0f;
}
}
void OnTriggerEnter2D(Collider2D collider)
{
if (collider.gameObject.CompareTag("Coins"))
CollectCoin(collider);
else
HitByLaser(collider);
}
void HitByLaser(Collider2D laserCollider)
{
if (!dead)
laserCollider.gameObject.GetComponent<AudioSource>().Play();
dead = true;
jetpack.enableEmission = false;
animator.SetBool("dead", true);
}
void CollectCoin(Collider2D coinCollider)
{
coins++;
Destroy(coinCollider.gameObject);
AudioSource.PlayClipAtPoint(coinCollectSound, transform.position);
coinsLabel.text = coins.ToString();
}
void AdjustFootstepsAndJetpackSound(bool jetpackActive)
{
footstepsAudio.enabled = !dead && grounded;
jetpackAudio.enabled = !dead && !grounded;
jetpackAudio.volume = jetpackActive ? 1.0f : 0.5f;
}
}