摞你命3000 发表于 2014-12-4 22:41

另类血条制作[2]-简单AI 残血时自动跑去加血

看了上一次我的帖子《unity 血条的另类制作-伤害减血加血自动回血,最简单教程,菜鸟必看。 》的童鞋,这次我们来做个简单AI 练习
地址在这里http://www.u3dchina.com/t-6116-1-1.html

因为上次只做了那个骷髅怪被击中减血和自动回血的功能,没有做在生命值低的时候会自动跑去加血的功能。好了,废话不说,我们开始。




1:首先在地图中放置一个空物体和一个Cube,其实Cube可以不放,我是为了运行的时候能知道那个加血点在什么地方而已。把空物体放在距离骷髅远一点的地方,然后起个名字叫jiaxuedian,名字随便起,不会影响代码的作用。然后把cube丢它旁边就行。就是为了做个标记,当然了,也可以在空物体做个效果 比如会冒烟啊,有光芒啊 什么的,我为了省事就不搞那么复杂了。




2:为加血点添加一个球形碰撞器,设置为IS Trigger 打钩,然后调整一下半径和高度,半径我调成了3.5,这样。也就是为了有个进入碰撞的检测范围。半径范围大概调成下面的图片差不多就可以了。



第二步的图片示例





3:然后为骷髅身上添加钢铁属性和一个胶囊碰撞器,调整参照截图就可以了。胶囊碰撞器范围不要太大,能裹住骷髅的身体就行,高度刚好在脚底这样就行,这个很重要,否则你会发现骷髅莫名其妙的站姿,等等怪异行为。





4:好了。准备工作完成了,接下来把上次的代码改一改就成了。
================================================
void Start () {   //脚本运行时就载入的脚本
               
                xuetiao = new Texture2D(512,32);            //定义血条是个2D贴图,括号里的是长和宽,具体自己可以在PS里制作,将制作的图片尺寸放入。
               
                xuetiao.wrapMode = TextureWrapMode.Clamp;       //将贴图拉伸覆盖到血条,严格点说是将血条这个图片拉伸
               
                dangqianHP = 1000; //这里的意思是运行的时候就用500的当前血量值,也可以在上面直接定个500的值,这里就不用定了

                bot_name = p_name.name;
                m_name.GetComponentInChildren<TextMesh>().text = bot_name;//改变3Dtext的文字,让他显示骷髅的名字

      
      }
======================================================      

打开那个xueliang.cs脚本,找到上面这段话,将当前生命值改成1000,。

=============================
public class pz : MonoBehaviour {
      public Transform target;//加血点坐标

      

====================================
在pz.cs这个脚本的头部加上上面这个变量。target 加血点坐标,添加好后记得在骷髅的属性面板里绑定那个空物体到这个target上,让骷髅知道加血点的坐标位置。
然后将Start 和 Update中添加以下内容:
============================================

      void Start ()
      {
                //动画为循环播放

                this.animation.wrapMode = WrapMode.Loop;
      }


      void Update ()
      {

      
      
      
                if (GetComponentInChildren<xueliang> ().dangqianHP <= 500) {
                        
                                                this.transform.LookAt (target.transform);
                                                transform.Translate (Vector3.forward * Time.deltaTime * 5);
                        
                                                gameObject.animation.Play ("run");
                              }
                                                
                              
      }//update结束符号


=======================================


protected void OnTriggerEnter(Collider other){
                              //protected void OnCollisionEnter(Collision collision){
                              if (other.gameObject.name == "Cube") {
                                                if (GetComponentInChildren<xueliang> ().dangqianHP < 1000) {
                                                                GetComponentInChildren<xueliang> ().dangqianHP += 500;
                                                                Instantiate (boomFire, target.transform.position, target.transform.rotation);
                                                                gameObject.animation.Play ("idle");

                                                }
                              }
                }

==============================
然后再将上面这一段代码添加到 pz.cs的尾部,就在碰撞检测之后,文档结束符号} 之前加入。别搞错了~




好了完成了,看看效果,当我向骷髅射击,他的血量低于500的时候,他就自动跑去加血点的位置加血去了。。。。。



跑到加血点后。接触了碰撞范围的检测,引爆了爆炸效果,当然这个效果应该放一个加血的光芒效果,懒得做了我。。呵呵,



然后骷髅的血量增加了500。

好了这次的作业我又做完了,同学们应该看明白了。连续两次的作业就涉及到了碰撞检测函数的使用。
OnCollisionEnter(Collision collision) 和 OnTriggerEnter(Collider other) 的使用方法

而OnTriggerEnter(Collider other) 这个我个人认为以目前自己的对unity的认知水平来看,最合适用来做AI的范围检测了,当然了还有Distance(距离检测)。两种方法都可以检测到入侵他地盘的玩家。检测到就进攻玩家。

自学了两个星期的Unity,感觉好累,我大部分时间都花在看代码上,然后弄到场景中进行反复测试,加深认识。

昨天我参考雨松momo的AI部分的代码,做了个改进和修正。感觉还不错,用状态机制来给AI选择不同的反应。有兴趣的童鞋们也研究研究。有时间的话做个教程。。。。

老规矩,回复看我的Poser 3d 美女作品 。。。哈哈

**** Hidden Message *****


sword2009 发表于 2014-12-5 13:02

RE: 另类血条制作[2]-简单AI 残血时自动跑去加血

unity3d大场景真实地形快速建模

旋风麦林 发表于 2014-12-5 18:02

看镁铝。。。

mqs88 发表于 2014-12-5 18:51

mlmlm';m'';[';,';m[kj[lp;[,l';
.';.]p[,p[,

subsystemp 发表于 2014-12-5 20:15


不错 不错 不错{:soso__3922851084632044791_6:}

wj2008wh 发表于 2014-12-6 14:29

多谢帮助分享,支持一下,看看。

tolikegame 发表于 2014-12-8 09:39

多谢帮助分享,支持一下

sibeansa 发表于 2014-12-8 10:19

主要看看Poser 3d 美女作品,好像是水菜丽

sibeansa 发表于 2014-12-8 10:20

wj2008wh 发表于 2014-12-6 14:29 static/image/common/back.gif
多谢帮助分享,支持一下,看看。

好吧,看完大图后发现不是

davidfoxhu 发表于 2014-12-8 10:44

用状态机制来给AI选择不同的反应
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 另类血条制作[2]-简单AI 残血时自动跑去加血