Unity3D基础知识 加入小组

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

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

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

接下来,我们要使飞船能发射子弹,所以我们要创建子弹模型,在资源中找到rocket.fbx模型文件,拖到Hierarchy中,这样就创建了子弹的游戏体,当然对于重复使用的游戏体,我们要做成预设体Prefab,我们打开菜单栏Assets->Create->Prefab,来创建一个新的预设体,如下图:

我们命名为Rocket,

那么子弹,飞船要发射,所以我们新建一个cs脚本,命名为Rocket,代码如下:

 

using UnityEngine;  

  1. using System.Collections;  
  2.   
  3. [AddComponentMenu("MyGame/Rocket")]  
  4.   
  5.   
  6. public class Rocket : MonoBehaviour {  
  7.   
  8.     //子弹飞行速度  
  9.     public float m_speed=10;  
  10.   
  11.     //生存时间  
  12.     public float m_liveTime=1;  
  13.   
  14.     //威力  
  15.     public float m_power=1.0f;  
  16.   
  17.   
  18.     protected Transform m_transform;  
  19.   
  20.   
  21.     // Use this for initialization  
  22.     void Start ()   
  23.     {  
  24.       
  25.   
  26.         m_transform=this.transform;  
  27.   
  28.   
  29.     }  
  30.       
  31.     // Update is called once per frame  
  32.     void Update ()   
  33.     {  
  34.       
  35.         m_liveTime-=Time.deltaTime;  
  36.   
  37.   
  38.         if(m_liveTime<=0)  
  39.         {  
  40.   
  41.   
  42.             Destroy(this.gameObject);  
  43.   
  44.         }  
  45.   
  46.         this.m_transform.Translate(new Vector3(0,0,-m_speed*Time.deltaTime));  
  47.   
  48.     }  
  49.   
  50. }  

把子弹脚本挂到子弹prefab上,然后我们再修改Player脚本,当我们按下空格或是鼠标左键的时候,就发射子弹,代码如下:

 

//          if(Input.GetKey(KeyCode.Space) || Input.GetMouseButton(0))  

  1. //          {  
  2. //                
  3. //                
  4. //                
  5. //              Instantiate(m_rocket,m_transform.position,m_transform.rotation);  
  6. //                
  7. //  
  8. //          }  

这样飞船就可以发射子弹了,但现在发射子弹的频率太快,所以我们定义一个变量来控制频率,每隔0.1秒发射一次,代码如下:

 

  1.         if(m_rocketRate<=0)  
  2.         {  
  3.   
  4.   
  5.             m_rocketRate=0.1f;  
  6.   
  7.   
  8.   
  9. //          if(Input.GetKey(KeyCode.Space) || Input.GetMouseButton(0))  
  10. //          {  
  11. //                
  12. //                
  13. //                
  14. //              Instantiate(m_rocket,m_transform.position,m_transform.rotation);  
  15. //                
  16. //  
  17. //          }  
  18.         }  


效果如下:

 

发表回复
你还没有登录,请先 登录或 注册!