火箭鼠的控制脚本



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;       
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值