接着筆記四:
此次要作的主要內容是:
- 鼠標移到怪物身上,界面出現當前怪物的血量
- 怪物響應玩家射擊,血量減小
- 建立預設:把怪物分佈到各個地方
1.首先須要瞭解一下繼承MonoBehaviour的GameObject有哪些方法是響應鼠標事件的:
2.這裏咱們須要用到的方法是:OnMouseOver、OnMouseExit、OnMouseDown,在EnemyController中新建一下方法:
//怪物初始總血量
private int blood = 100;
//怪物響應鼠標事件
void OnMouseDown()
{
if (true == isShowBlood && blood > 0 && true == bulletController.hasBullets ()) {
isAttacked = true; //觸發被攻擊狀態
blood = blood - 5;
if (0 >= blood)
{
dead();
}
}
}
//鼠標移到怪物身上顯示怪物血量
void OnMouseOver()
{
isShowBlood = true;
}
void OnMouseExit()
{
isShowBlood = false;
}
3.新建一個類RoleBulletController,用來控制玩家的子彈個數,並綁定在主角身上:
//初始子彈個數
private int bullets = 100;
public bool hasBullets()
{
if (bullets > 0)
{
//每檢測一次就至關於發射一個子彈
bullets--;
return true;
}
else
{
return false;
}
}
4.新建兩個貼圖,並把圖片拖動到腳本上賦值:
//是否顯示血量
private bool isShowBlood = false;
//血量背景貼圖
public Texture2D bloodBgTexture;
//血量貼圖
public Texture2D bloodTexture;
//畫實時血量
void OnGUI()
{
if (true == isShowBlood)
{
GUI.DrawTexture(new Rect(0, 0, bloodBgTexture.width, bloodBgTexture.height), bloodBgTexture);
GUI.DrawTexture(new Rect(0, 0, bloodTexture.width * (blood * 0.01f), bloodTexture.height), bloodTexture);
}
}
5.修改checkState方法,使得怪物即便距離過遠,可是被主角攻擊以後仍是會向主角跑來:
//檢測怪物狀態
private void checkState()
{
//怪物與主角的距離
float dist = Vector3.Distance(role.transform.position, transform.position);
if ((dist <= RUN_TO_ROLE_DISTANCE && dist > ATTACK_DISTANCE) ||
(true == isAttacked && dist > ATTACK_DISTANCE))
{
currentState = STATE_RUN;
}
else if (dist <= ATTACK_DISTANCE)
{
currentState = STATE_ATTACK;
isAttacking = true;
}
else
{
currentState = STATE_IDLE;
}
}
6.運行程序~! T_T
7.這時候會發現把鼠標移動到怪物身上,根本沒反應,這是咋回事呢?
打開API,上面很詳細的寫到只有GUI元素以及存在碰撞的對象纔會響應該方法,
因此接下來就是給怪物加上碰撞。
8.在Hierarchy面板選中怪物對象,添加一個膠囊碰撞(通常人物都是用這個):
9.運行程序,鼠標以上怪物,喲西,血量出來了。
10.而後,由於遊戲必然是會有不少的怪物的,爲了讓咱們更方面的在場景裏面添加同種怪物,
可使用預設。
預設 (Prefabs)
預設 (Prefab) 是一種資源 - 存儲在工程視圖 (Project View) 中可重複使用的遊戲對象 (GameObject)。
預設 (Prefabs) 可放入到多個場景中,且每一個場景可以使用屢次。向場景添加一個預設 (Prefab) 時,就
會建立它的一個實例。全部預設 (Prefab) 實例都連接到原始預設 (Prefab),實質上是原始預設的克隆
。無論您的工程中有多少個實例,您對預設 (Prefab) 做薄出任何更改時,您會看到這些更改應用於所
有實例。
11.在Project面板右鍵新建:
這時候建立出來的是一個空的物體:
而後把上面的怪物拖動到這上面,更名爲Robot:
而後就能夠隨便的往場景中添加這類怪物了。
12.運行程序~!成功。