歡迎來到Unity學習社區
一、怪物在一定距離內走向主角並擊打主角
這裏的思路爲:
首先需要確定主角的位置和怪物的位置,分別爲其定義相應的變量;
這裏主角位置定義爲hero.positio,怪物位置爲transform.position
然後通過Vector3調用Distance方法實現怪物的行爲。
關鍵代碼如下:
if (Vector3.Distance(transform.position, hero.position) < 3f)
// 這裏調用了Vector3中的Distance方法用於返回主角和怪物之間的距離。
anim.animation.Play("Ratkin_1H_sword_swing_high_straight_down");
//當兩者距離小於3米時調用其自身打擊動畫
}
else if (Vector3.Distance(transform.position, hero.position) < 5f)
{
anim.animation.Play("Ratkin_1H_combat_run");/調用怪物跑的狀態
agent.SetDestination(hero.position);//使得怪物移動至主角位置
}
else if (Vector3.Distance(transform.position, hero.position) > 5f) {
anim.animation.Play("Ratkin_IDLE");//調用怪物禁止狀態
agent.SetDestination(transform .position);//使得怪物處於當前位置
}
腳本掛在在怪物遊戲對象上。
二、通過GUI實現血條的創建
思路爲:通過兩張重疊的圖片來顯示生命值;通過顯示前景圖片的寬度顯示血條的增加和減少;
HP = (int)Hero.lifetime;//獲取主角生命值
if (HP <=100)//
{
int blood_width = red.width * HP / 100;
//設置前景圖片的顯示寬度,將圖片寬度與生命值進行比例轉換
GUI.DrawTexture(new Rect(20, 20, 100, 20), black);
GUI.DrawTexture(new Rect(20, 20, blood_width, 20), red);
//通過調用繪製紋理來實現前景圖片與背景圖片的顯示
}else if(HP >100){
int blood_width = red.width ;
GUI.DrawTexture(new Rect(20, 20, blood_width, 20), red);
//當生命值獲取到最大時顯示圖片不在增加寬度 只顯示圖片寬度
}