搭建个人视频网站,个人网站要有什么,xly000.wordpress,南京公司网站建设平台文章目录 前言素材插件一、基础使用二、敌人物理攻击三、敌人面向玩家四、敌人法术攻击五、随机进行攻击六、敌人不同的阶段推荐学习视频源码完结 前言
Behavior Designer是一个行为树插件#xff0c;是一款为了让策划#xff0c;程序员#xff0c;美术人员方便使用的可视化… 文章目录 前言素材插件一、基础使用二、敌人物理攻击三、敌人面向玩家四、敌人法术攻击五、随机进行攻击六、敌人不同的阶段推荐学习视频源码完结 前言
Behavior Designer是一个行为树插件是一款为了让策划程序员美术人员方便使用的可视化 编辑器。Behavior Designer提供了强大的AP1可以让你轻松的创建tasks(任务)配合 uScript和PlayMaker这样的插件可以不费吹灰之力就能够创建出强大的Al系统而无需写 行代码。不懂PlayMaker的我后面在单独出文章介绍一下可以期待一下
BehaviorDesigner插件的基础使用发哥已经做了详细的介绍了但是我发现例子很少于是就有了这篇文章我自己琢磨实现一个简单的BOSS的AI行为树把思路分享出来你可以依据这些思路进行再扩展
不懂BehaviorDesigner基础操作的可以去看发哥的这篇文章BehaviorDesigner插件制作AI行为树
素材 插件
1、AssetStore下载 插件可以在AssetStore下载到地址https://assetstore.unity.com/packages/tools/visual-scripting/behavior-designer-behavior-trees-for-everyone-15277 2.我放了1.7.1版本的到GitCode上地址 https://gitcode.net/unity1/unitybehaviordesigner
一、基础使用
新建2d项目搭建环境主角和敌人boss给boss新增animator动画大致连线 导入BehaviorDesigner插件点击菜单Tools/Behavior Designer/Editor即可打开编辑器窗口
并在敌人身上创建行为树空格新增Repeater节点并勾选永远循环 打印测试sequence节点控制从左到右执行 每3秒打印打印日志 运行效果
二、敌人物理攻击
新增脚本Attack
using UnityEngine;
using BehaviorDesigner.Runtime;
using BehaviorDesigner.Runtime.Tasks;public class Attack : Action
{public Animator animator;public GameObject player;public override void OnStart(){//切换动画状态为攻击animator.SetTrigger(Attack);}public override void OnEnd(){Debug.Log(打印2);}
}运行效果敌人每3秒发动一次攻击
三、敌人面向玩家
新增FacePlayer脚本
using BehaviorDesigner.Runtime.Tasks;
using UnityEngine;//始终面向主角
public class FacePlayer : Action
{private float baseScaleX;public GameObject player;public override void OnAwake(){baseScaleX transform.localScale.x;}public override TaskStatus OnUpdate(){Vector3 scale transform.localScale;scale.x transform.position.x player.transform.position.x ? baseScaleX : -baseScaleX;transform.localScale scale;return TaskStatus.Success;}
}运行效果先朝向玩家再发起攻击
四、敌人法术攻击
新增Cast脚本
using UnityEngine;
using BehaviorDesigner.Runtime.Tasks;public class Cast : Action
{public GameObject player;public GameObject spell;public override void OnStart(){//生成技能攻击特效float playerH player.gameObject.GetComponentSpriteRenderer().sprite.bounds.size.y; //通过SpriteRenderer获得人物高度Object.Instantiate(spell, player.transform.position new Vector3(0, playerH, 0), Quaternion.identity);}
}这次我们用Set Trigger节点控制动画切换 运行效果大概流程就是开始等待3秒面朝主角切换动画为魔法攻击动作再等待0.5秒后切换回Idle动画并运行Cast代码触发攻击特效一直循环
五、随机进行攻击 关键就是Random Selector节点的使用 中间插入Random Selector节点分别连接两种攻击模式运行效果
六、敌人不同的阶段
你可能还希望boss在不同阶段有不同的效果比如半血以下狂暴不同技能等
新增IsHealthUnder脚本我这里就简单举个例子
using BehaviorDesigner.Runtime.Tasks;public class IsHealthUnder : Action
{public float health;public override TaskStatus OnUpdate(){return health 50 ? TaskStatus.Success : TaskStatus.Failure;}
}新增Selector节点 运行效果因为是测试我这里就手动改敌人的血量了
当血量低于50时处于第二阶段就会走左边打印日志你可以在这里加入敌人新的状态和技能或者过场动画 当血量大于100时处于第一阶段敌人还是正常走前面的逻辑
推荐学习视频
如果还是不懂的小伙伴我推荐两个视频大家可以自行去学习 【视频1】使用行为树在UNITY中重现假骑士Boss战空洞骑士 【视频2】使用行为树在UNITY中重现大黄蜂Boss战空洞骑士
源码
https://gitcode.net/unity1/unity-ai-behavior
完结
赠人玫瑰手有余香如果文章内容对你有所帮助请不要吝啬你的点赞评论和关注以便我第一时间收到反馈你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法也欢迎评论私信告诉我哦
好了我是向宇https://xiangyu.blog.csdn.net
一位在小公司默默奋斗的开发者出于兴趣爱好于是最近才开始自习unity。如果你遇到任何问题也欢迎你评论私信找我 虽然有些问题我可能也不一定会但是我会查阅各方资料争取给出最好的建议希望可以帮助更多想学编程的人共勉~