unity项目小总结

欢迎来到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);


//当生命值获取到最大时显示图片不在增加宽度 只显示图片宽度

           }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章