欢迎来到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);
//当生命值获取到最大时显示图片不在增加宽度 只显示图片宽度
}