Unity標籤、射線和階層1/3_Tag標籤

Tag標籤

Tag標籤的是為了使物件有一個區別名稱,便於歸類物件及程式碼指定便利,例如角色與怪物的區別,設定怪物只能攻擊玩家或者玩家只能攻擊怪物。

場景布置

  • 新增專案Class_5_1_AirPlane,匯入資料夾與素材,怪物與玩家的模型放置到02_Modls資料夾內,Ground、Monster、Player的Png圖片檔案、UI資料夾放置到03_Texture資料夾內。
  • 轉換為Android平台後,設定為720 x 1280解析度。
  • 在場景中新增Plane平面物件並命名為Ground,物件座標歸零,拖曳Ground貼圖到Ground物件上,並在Inspector屬性視窗中修改Transform座標元件的Position屬性Y軸為-2,Scale屬性X與Z軸為2.2與2,材質球元件的Smoothness屬性為0,讓圖片感光面的平滑曲線為0使表面不會有光線亮點存在。
  • 調整Main Camera屬性視窗中座標元件的設定,Position屬性的Y與Z軸為10與0,Rotation屬性的X軸為90。
  • 修改Monster與Player的Model模型的Scale Factor為0.01,其物件的材質球給予相對應的貼圖,並創建空物件Player後拖曳Player模型作為子物件,原因當初輸出模型的角度並不符合操作的方向,修改Player模型Transform元件Rotation屬性的Y軸為180,Scale屬性的X、Y與Z都為0.2,並把Player父物件的Transform元件的Position屬性的Z軸改為-5。
  • 給予Player父物件Rigidbody剛體與SphereCollider球型碰撞元件,取消勾選Rigidbody剛體元件的Use Gravity屬性並勾選SphereCollider球型碰撞元件內的Is Trigger屬性。
  • 給予Player父物件_01_PlayerMove腳本。
  • 分別製作PlayerBullet與MonsterBullet兩種子彈,Transform元件的Scale屬性X、Y與Z為0.3,給予子彈材質球以顏色區分,新增_02_BulletFly腳本,計時自我毀滅程式,子彈給予公開持續飛行速度為15與-10,放到06_Prefaps資料夾內製作成預製物。

_02_BulletFly腳本:

  • 拖曳PlayerBullet預製物到Player物件_01_Player腳本內的公開物件PlayerBullet欄位上。
  • 拖曳Monster模型到場景中並設定Transform元件的Scale屬性X、Y與Z為0.2,給予Monster模型Rigidbody剛體與SphereCollider球型碰撞元件,取消勾選Rigidbody剛體元件的Use Gravity屬性並勾選SphereCollider球型碰撞元件內的Is Trigger屬性,給予新增_03_Monster腳本。

_03_Monster腳本:

新增標籤

  • 選擇Player物件,點選Inspector屬性視窗下的Tag標籤選擇Add Tag,新增PlayerBullet、MonsterBullet、Monster三個Tag標籤,Player原本就有內建標籤可以不用額外新增。
  • 怪物子彈給予標籤MonsterBullet標籤,玩家子彈給予PlayerBullet標籤,玩家給予Player標籤,怪物給予Monster標籤。

測試Tag的效用,進入_03_Monster腳本作更改。

  • 執行場景並測試,會發現Player發射的子彈依舊碰觸到Monster後被刪除,如果沒被刪除,玩家子彈的Tag可能沒設定儲存,如果子彈成功刪除不妨嘗試把Tag改成非PlayerBullet。給予子彈上Tag的原因,是為了之後會產生很多隨機地點出現的Monster,Monster會發射子彈,避免Monster間互相攻擊。

怪物生命值

  • 繼續_03_Monster腳本設定,怪物被玩家子彈攻擊扣除生命值後死亡,在腳本內新增Monster的生命值。

03_Monster腳本

  • 點選Monster物件並在Inspector屬性視窗中修改_03_Monster腳本的公開數字MonsterLife設定成3,這時候執行場景並且點擊滑鼠左鍵使Player發射子彈,射到Monster三次,Monster就會被Destory刪除掉。

怪物發射子彈

  • 怪物有了生命值之後,接下來就是隨機發射怪物子彈開啟_03_Monster腳本。
  • 設定好之後,Monster要持續往前移動,所以新增一個Float Speed來讓Monster一開始就有一個隨機起始速度移動。

_03_Monster腳本:

  • 現在Monster會往前進,也會隨機時間發射子彈之後,就把Monster製作成預製物後刪除場景中的Monster,新增一個新的空物件並命名為MonsterControl後,給予一個新的腳本_04_MonsterInstantiate,這個腳本是讓Monster在地圖上方隨機位置產生。

把Monster製作成預製物。

新增空物件並命名為MonsterControl,給予腳本_04_MonsterInstantiate。

_04_MonsterInstantiate腳本:

  • 把Monster預製物拖拉到_04_MonsterInstantiate的Monster裡,按開始的時候,就會看到Monster隨機產生。

玩家生命值

怪物有了生命值,也有了隨機位置產生且隨機時間發射子彈,接著處理玩家的屬性,讓玩家被怪物射到也會消失,開啟_01_PlayerMove腳本寫入程式碼之後,點選Hierarchy階層結構視窗的Player父物件在Inspector屬性視窗中修改Sphere Collider元件的Radius屬性改成0.4為了讓玩家比較好躲子彈,記得_01_Player腳本的PlayerLife生命值要設定。

_01_PlayerMove腳本:

相關文章

Unity動畫3/4

Animator動畫控制器

Unity動畫4/4

Event事件宣告

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *