006_MyMOBA_AIPawnMove

---------------2015.8.17--------2015.8.--------李明阳--------------------

 

主要逻辑:

这个HeroAIPawn自动寻路,会和玩家抢“可拾取物”,首先在场景中放入可拾取物,然后AIPawn就走到“可拾取物”的位置。

UDNMOBAGame的Hero寻路是玩家鼠标点击的位置传到HeroAIController::StartMoveCommand(VectorWorldMoveLocation),这个过程中一直在传递参数WorldMoveLocation。在这里省掉那些逻辑,“可拾取物”位置直接作为WorldMoveLocation,HeroAIController直接进入StartMoveCommand()。

 

在这个过程中同步完成MiniMap来“监控”场景内容和AI的动向。

取消Findspot确认函数,取消场景管理生成的TempletPickup(TempletPickup,,AIPawn永远无法拾取到)

在场景中加入PathNode和Poly后,通过MiniMap和Log看到AI找不到路的时候会经常卡住,而且MoBaCreep自带的刚体布娃娃在AI卡住时好像工作起来不好,代码方面参考假装倒地做了适当改动,AI以胡萝卜作为目标点,寻路过程由于场景路况复杂,Path容易找不到路径,经常卡住,在原基础上做了点优化(当找不到路径时,随机选择一个PathNode作为新的目标点)

 

PostBeginPlay()

         AIPawn生成的时候,PostBeginPlay最终在Pawn::PostBeginPlay中生成HeroAIController,并最终在(父类)Controller中占有那个AIPawn。

可拾取物:

本打算用UTGame的可拾取物UTPickupFactory_SuperHealth,但是在SimpleGameInfo中UTGameInfo的东西,总感觉不太兼容。用UTPickupFactory,加入EventTouch和Bump都没有反应。(UTGame好像VS没法调试)

这里改用一个Trigger(Trigger_PawnsOnly.uc),

Components.Remove(Sprite)保留UTPickupFactory_SuperHealth的粒子特效,设为bNoDelete=false //Spawnable,设置可拾取物的Rotation

        

生成可拾取物:

functionSearchPickup()

场景管理缓存所有的PathNode在数组中,随机选择路点,生成可拾取物。可拾取物的位置作为AIpawn需要移动的目标点,进入移动状态,同时过一段时间后检查可拾取物是否还在,如果不在了重新进入Idle,同时30秒内没有获得拾取物,重新进入Idle,如果状态“挂了”,重新进入Idle。

 

角色可以移动了,移动过程中更像是在滑步(去掉AnimTree中的BlendbySpeed)

Event Touch

当这个Pickup被Touch后“告诉”场景管理器可拾取物数量变化,同时触碰者Pawn拥有的胡萝卜数量加1。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值