• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Unity環(huán)境中《坦克大戰(zhàn)》雙人游戲的研究與實現(xiàn)

      2018-05-14 13:52:17易威環(huán)
      關(guān)鍵詞:雙人剛體腳本

      易威環(huán)

      [摘 要] 采用Unity3D5.6.1+VS2013+C#語言為開發(fā)環(huán)境設(shè)計《坦克大戰(zhàn)》雙人游戲,其中首先搭建了游戲場景,再設(shè)計雙人控制環(huán)境并實現(xiàn),最后實現(xiàn)子彈的發(fā)射,從而實現(xiàn)完整的雙人游戲功能,逐一進行講解,并配有詳細的代碼及圖例。

      [關(guān) 鍵 詞] unity;VS;坦克大戰(zhàn);游戲

      [中圖分類號] G898.2 [文獻標(biāo)志碼] A [文章編號] 2096-0603(2018)08-0118-01

      一、場景搭建

      1.新建項目TankShot,將資源包TankAssset.unitypackage導(dǎo)入并拖出場景LevelArt,并除平行光,調(diào)整天空盒Source為Color。

      2.添加坦克Tank,增加剛體、碰撞盒,并通過Edit Collider調(diào)整碰撞盒大小。

      3.添加灰塵效果,將資源庫中的Prefabs/DustTrail拖入坦克后輪,左右各一個,通過調(diào)整為Back視圖、Top視圖進行定位。

      二、雙人控制

      1.將原坦克設(shè)為預(yù)設(shè)體,并在場景中添加另一臺坦克Tank1,如果場景中的某坦克有修改,為了能使由預(yù)設(shè)體產(chǎn)生的所有對象都能改變,需點擊組件面板上的“Apply”按鈕。

      2.先增加六套按鍵(注:小回車:enter,大回車:return左Ctrl:left ctrl,Negative:負,Positive:正,系統(tǒng)已經(jīng)有的鍵定義不能刪除):

      Horizontal1:a/d鍵 Vertical1:s/w鍵 Horizontal2:left/right鍵

      Vertical2:down/up鍵 fire1:space鍵 fire2:return

      3.新建腳本:TankMovement

      public class TankMovement:MonoBehaviour {

      private Rigidbody m_rigidbody;

      private float moveValue,turnValue,moveSpeed,turnSpeed;//移動、旋轉(zhuǎn)的值和速度

      private string moveAxisName,turnAxisName;

      public int playerNum;//玩家序號

      void Start () {

      m_rigidbody = GetComponent();//獲取坦克身上的剛體組件

      moveAxisName = "Vertical" + playerNum;

      turnAxisName = "Horizontal" + playerNum;

      }

      void Update () {

      moveValue = Input.GetAxis(moveAxisName);//按左右鍵或a、d鍵

      turnValue = Input.GetAxis(turnAxisName);//按上下鍵或w、s鍵

      }

      void FixedUpdate() { //物理更新,一直按0.02秒進行更新

      Move(); Turn();

      }

      void Move(){ //移動

      Vector3 movements=transform.forward*moveValue* Time.delta Time *moveSpeed;

      m_rigidbody.MovePosition(m_rigidbody.position + movements);//實現(xiàn)移動

      }

      void Turn() { //旋轉(zhuǎn)

      float turn = turnValue * Time.deltaTime * turnSpeed;//具體的旋轉(zhuǎn)角度

      Quaternion turnRotation = Quaternion.Euler(0,turn,0);//繞y軸旋轉(zhuǎn)

      m_rigidbody.MoveRotation(m_rigidbody.rotation * turnRotat-ion);

      } }

      4.將腳本拖放在兩上Tank上,分別設(shè)置其playNam為1、2,為防止坦克飛起來,可如圖將坦克預(yù)設(shè)體鎖定。

      三、發(fā)射炮彈

      1.在Tank游戲?qū)ο笊闲陆諏ο螅篢ankShellPos,調(diào)整在槍口位置:通過Left視圖進行調(diào)整,繞X軸旋轉(zhuǎn)-15度。

      2.從Shell中拖出子彈Shell,添加剛體,拖到項目視圖Prefabs中為預(yù)設(shè)體,將場景中的子彈刪除。

      3.新建TankShotting:

      public class TankShotting :MonoBehaviour {

      private string fireButton;

      public int playerNum;//玩家編號

      public Rigidbody shell;//炮彈

      public Transform fireTransform;//攻擊位置

      void Start () {

      fireButton = "fire" + playerNum;

      }

      void Update () {

      if (Input.GetButtonDown(fireButton)) {

      Fire();

      } }

      void Fire() {

      Rigidbody shellInstance=Instantiate(shell,fireTransform.position,fireTransform.rotation);

      shellInstance.velocity = fireTransform.forward * 10;//給炮彈添加速度

      } }

      4.將腳本TankShotting掛在Tank上,并進行設(shè)置,然后點擊Apply按鈕,在Tank1上,設(shè)置player Num為2。

      四、運行游戲

      一個用戶可通過按adsw和Enter鍵控制一輛坦克進行射擊,另一個用戶可通過按↑↓→←和Space控制另一輛坦克進行移動射擊。

      五、小結(jié)

      Unity是一款全面整合的專業(yè)游戲引擎,開發(fā)者編寫少量腳本就可輕松創(chuàng)建三維游戲。

      參考文獻:

      Unity Technologies. Unity 5.X從入門到精通[M].中國鐵道出版社,2016.

      猜你喜歡
      雙人剛體腳本
      酒駕
      雙人面具
      ——為小提琴與鋼琴而作
      黃河之聲(2021年19期)2021-02-24 03:25:26
      安奇奇與小cool 龍(第二回)
      差值法巧求剛體轉(zhuǎn)動慣量
      數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
      電子測試(2018年14期)2018-09-26 06:04:24
      車載冷發(fā)射系統(tǒng)多剛體動力學(xué)快速仿真研究
      快樂假期
      “雙人運球”樂翻天
      “雙人運球”樂翻天
      剛體定點轉(zhuǎn)動的瞬軸、極面動態(tài)演示教具
      物理實驗(2015年10期)2015-02-28 17:36:56
      克东县| 武宣县| 荣昌县| 苏尼特左旗| 陈巴尔虎旗| 金山区| 台前县| 乐至县| 济源市| 迭部县| 江西省| 盱眙县| 永年县| 潼南县| 奉节县| 旌德县| 延寿县| 张家界市| 山阳县| 通海县| 青海省| 佛冈县| 景宁| 尼勒克县| 昆明市| 黄龙县| 洛宁县| 噶尔县| 蒙城县| 田林县| 金堂县| 河东区| 新余市| 云安县| 剑阁县| 洛隆县| 连州市| 鄂尔多斯市| 分宜县| 靖远县| 阳朔县|