Unity3D 5.x 簡單實例 - 發射炮彈


1,下載、安裝: http://unity3d.com/cn/get-unity/download/archive 

  建議直接借助 UnityDownloadAssistant 進行安裝,根據需要勾選需要的資源包,下載完成后有以下資源:

  

2,學習視頻:51自學網 → Unity3D游戲制作入門教程

   學習建議: 參考教程中的思路、實現方法,但不一定完全要按照教程中的每一步去做,覺得不好的地方,自己可以變通一下

3,發射炮彈實例注意事項:

  (1) 教學中編輯器是4.X版本的,官網下載的最新版本是5.X版本,部分Javascript的代碼語法不同

    如:5.X 版本中 獲取組件的代碼是:  n.GetComponent(Rigidbody).AddForce(fwd*3800);

      5.X 版本中 可用 UI - Text 代替 之前版本的 GUIText :  

      gameObject.Find("Canvas/Text").GetComponent(Text).text ="射擊次數:"+shootNums;  

  (2) 地面建議用 3D Object →  Plane 對象,然后加大 x,z ,y 設置為1 

  (3) 顯示發射次數和顯示次數的文本 

  (4) 發射的子彈暫時不Destroy

4,以下是1-21課完整的Javascript代碼:

   附加在Main Camera上的JS: 

import UnityEngine.UI;

#pragma strict

var speed:int=5;
var Newobject:Transform;

//發射次數
var shootNums:int=1000;
//保存消滅數量
var  killNums:int=0;

function Start () {
    gameObject.Find("Canvas/Text").GetComponent(Text).text ="射擊次數:"+shootNums + "  消滅數量:"+killNums;   

    //加載音樂
    gameObject.Find("Plane").GetComponent(AudioSource).Play();
    gameObject.Find("bullt").GetComponent(AudioSource).Pause();
}


function Update () {

    //鏡頭(視角)前后左右移動 : W S A D
    var x:float=Input.GetAxis("Horizontal")*Time.deltaTime*speed;
    var z:float=Input.GetAxis("Vertical")*Time.deltaTime*speed;
    transform.Translate(x,0,z);
       
   
    //點擊 Ctrl 或 點擊鼠標左鍵 發射
    if (Input.GetButtonDown("Fire1")) { 

        //創建發射球體
        var n:Transform =  Instantiate(Newobject,transform.position,transform.rotation);
        //定義發射方向
        var fwd:Vector3=transform.TransformDirection(Vector3.forward);
        //發射力度
        n.GetComponent(Rigidbody).AddForce(fwd*3800);

        gameObject.Find("bullt").GetComponent(AudioSource).Play();
        //記錄發射次數
        shootNums+=1;  
         
        //更新發射次數
        gameObject.Find("Canvas/Text").GetComponent(Text).text ="射擊次數:"+shootNums+ "  消滅數量:"+killNums; 
    }  

    //旋轉功能
    //視角向右轉 E
    if(Input.GetKey(KeyCode.Q)){
        transform.Rotate(0,-25*Time.deltaTime,0,Space.Self);
    }
    //視角向左轉 Q
    if(Input.GetKey(KeyCode.E)){
        transform.Rotate(0,25*Time.deltaTime,0,Space.Self);
    }
    //仰視 Z
    if(Input.GetKey(KeyCode.Z)){
        transform.Rotate(-25*Time.deltaTime,0,0,Space.Self);
    }
    //俯視 C
    if(Input.GetKey(KeyCode.C)){
        transform.Rotate(25*Time.deltaTime,0,0,Space.Self);
    }

    //鏡頭水平向上、水平向下移動
    if(Input.GetKey(KeyCode.H)){
        transform.Translate(0,5*Time.deltaTime,0);
    }
    if(Input.GetKey(KeyCode.N)){
        transform.Translate(0,-5*Time.deltaTime,0);
    }
}
View Code

    附加在消滅立方體物體上的JS:   

#pragma strict

function Start () {

} 

//消滅數量
var countkillNums:int=0;

function Update () {   
     
    if (gameObject.transform.position.y<0) {   

        countkillNums=++gameObject.Find("Main Camera").GetComponent(ShootBullt).killNums;   

        if (countkillNums>=21) {
            gameObject.Find("Canvas/Text").GetComponent(Text).text =   "恭喜:闖關成功!" ;  
            gameObject.Find("Main Camera").GetComponent(ShootBullt).enabled=false; 
        }

        Destroy(gameObject);
    }
  
}
View Code

 

實現效果

  

 

 

5.x KEY : Download   Reference

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM