找回密码
 立即注册
查看: 11692|回复: 140

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

 火.. [复制链接]
发表于 2014-12-4 22:41 | 显示全部楼层 |阅读模式
资源信息 Tutorial Information
教程名称: 另类血条制作[2]-简单AI 残血时自动跑去加血(发帖教程)
适用引擎:   (适用引擎,为空默认为Unity)
教程语种: 中文
教程等级: 1
教程格式: 文档(请用IE9以上浏览器访问本版块)
教程作者: 摞你命3000 (如有问题请短消息联系作者或发表回复)
下载地址: (兑换积分)
点击查看原图
美丽分割线
看了上一次我的帖子《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 美女作品 。。。哈哈

游客,如果您要查看本帖隐藏内容请回复



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 2鲜花 +2 收起 理由
junys + 1 神马都是浮云
lulu750 + 1 赞一个!

查看全部评分

发表于 2014-12-5 13:02 | 显示全部楼层

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

unity3d大场景真实地形快速建模
发表于 2014-12-5 18:02 | 显示全部楼层
看镁铝。。。
发表于 2014-12-5 18:51 | 显示全部楼层
mlmlm';m'';[';,';m[kj[lp;[,l';
.';.]p[,p[,
发表于 2014-12-5 20:15 | 显示全部楼层

不错 不错 不错{:soso__3922851084632044791_6:}
发表于 2014-12-6 14:29 | 显示全部楼层
多谢帮助分享,支持一下,看看。

点评

好吧,看完大图后发现不是  详情 回复 发表于 2014-12-8 10:20
发表于 2014-12-8 09:39 | 显示全部楼层
多谢帮助分享,支持一下
发表于 2014-12-8 10:19 | 显示全部楼层
主要看看Poser 3d 美女作品,好像是水菜丽
发表于 2014-12-8 10:20 | 显示全部楼层
wj2008wh 发表于 2014-12-6 14:29
多谢帮助分享,支持一下,看看。

好吧,看完大图后发现不是
发表于 2014-12-8 10:44 | 显示全部楼层
用状态机制来给AI选择不同的反应

点评

我也知道可以这样做,但我才学习两个星期unity。。。还没能达到那个层次。。  详情 回复 发表于 2014-12-8 12:28
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-21 18:05 , Processed in 0.114811 second(s), 34 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表