Unity3D基础知识 加入小组

34个成员 32个话题 创建时间:2015-09-16

Unity3d项目实战——飞机大战(六)

发表于2015-10-13 1736次查看

接下来我们就修改相关脚本,首页打开Enemy.cs脚本,添加一个生命属性:

 

//生命  

 

  1.     public float m_life = 10;  

然后添加一个OnTriggerEnter函数,在碰撞体相互接触时会被触发,

 

  1. void OnTriggerEnter(Collider other)  
  2.     {  
  3.   
  4.   
  5.         if (other.tag.CompareTo ("PlayerRocket") == 0)   
  6.         {  
  7.   
  8.             Rocket rocket = other.GetComponent<Rocket> ();  
  9.   
  10.                       
  11.             m_life -= rocket.m_power;  
  12.   
  13.                           
  14.             if (m_life <= 0) {  
  15.   
  16.   
  17.                 GameManager.Instance.AddScroe(m_point);  
  18.   
  19.   
  20.                 Instantiate(m_explosionFX,m_transform.position,Quaternion.identity);  
  21.   
  22.                 Destroy (this.gameObject);  
  23.   
  24.   
  25.                       
  26.             }  
  27.   
  28.         }   
  29.         else if (other.tag.CompareTo ("Player") == 0)  
  30.         {  
  31.                   
  32.           
  33.             m_life=0;  
  34.   
  35.             Instantiate(m_explosionFX, m_transform.position, Quaternion.identity);  
  36.   
  37.             Destroy(this.gameObject);  
  38.   
  39.   
  40.           
  41.         }  

然后打开Rocket.cs脚本,也添加一个OnTriggerEnter函数,如果子弹撞到敌人,销毁自身

 

 

 

  1. void OnTriggerEnter(Collider other)  
  2. {  
  3.   
  4.   
  5.   
  6.     if (other.tag.CompareTo ("Enemy") == 0) {  
  7.               
  8.   
  9.                   
  10.         Destroy (this.gameObject);  
  11.   
  12.   
  13.     } else   
  14.     {  
  15.   
  16.         return;  
  17.   
  18.   
  19.     }  
  20.   
  21.   
  22.   
  23.   
  24. }  

最好修改Player.cs,添加一个生命属性,然后也添加一个OnTriggerEnter函数,主角飞船与任何已方子弹以外的碰撞体相撞都会损失一点生命,生命为0时销毁自身,

 

//生命  

  1. public float m_life=3;  

void OnTriggerEnter(Collider other)  

  1. {  
  2.   
  3.   
  4.   
  5.     if (other.tag.CompareTo ("PlayerRocket") != 0)   
  6.     {  
  7.   
  8.   
  9.         m_life-=1;  
  10.   
  11.   
  12.         if(m_life<=0)  
  13.         {  
  14.   
  15.   
  16.             Instantiate(m_explosionFX,m_transform.position,Quaternion.identity);  
  17.   
  18.   
  19.             Destroy(this.gameObject);  
  20.   
  21.   
  22.         }  
  23.   
  24.   
  25.     }  
  26.   
  27.   
  28.   
  29.   
  30. }  


运行,如下:

 


最后,我们判断下出界,当敌人出界时,就销毁自身,同上面一样,创建一个空的游戏体,命名为bound,添加一个bound的tag,和相关物理组件,

属性如下:

修改Enmey.cs脚本

 

else if (other.tag.CompareTo ("bound") == 0)  

  1.         {  
  2.               
  3.               
  4.             m_life=0;  
  5.               
  6.             Destroy(this.gameObject);  
  7.               
  8.             Debug.Log("---destroy");  
  9.               
  10.         }  
发表回复
你还没有登录,请先 登录或 注册!