UE4 蓝图 模拟运输单位过程 《把大象放冰箱里再拿出来要几步》
准备:一辆小车车 可以移动的NPC单位
把NPC移动到小车车处
首先需要获取点击的位置

然后执行Move to location or actor 操作

最后放到车上
这里执行移动到小车上需要对object的有效性进行判断,不然NPC进入小车车后,
SelectedUnit这个集合会被Clear,然后回来一个空指针访问,
虽然不崩溃,但后台会记入这个情况。
如果你overlap选择false
stateDiagram-v2
[*] --> NPC移动
NPC移动 --> 撞到小车车
撞到小车车 --> 一直原地踏步
一直原地踏步 --> 无法到达指定点,无法上车
这种情况就是增加判断范围,在NPC达到指定点前就开始判断,消除撞到小车车这个情况
stateDiagram-v2
[*] --> NPC移动
NPC移动 --> 撞到小车车
撞到小车车 --> 一直原地踏步
一直原地踏步 --> 无法到达指定点,无法上车
NPC移动 --> 进入上车范围
进入上车范围 -->NPC进入小车车
NPC上了小车车
总体逻辑和把大象放到冰箱里一个道理
需要把选择的NPC ,selectedunits这个集合里的单位一个个放到Car的Passengers集合里。
如果命中的单位是小车车,同时车里还能放入单位就进行下一步集合单位移动操作


游戏里上车这个行为是很有讲究的,因为模型之间会有碰撞,
你的小车车大部分情况就是个长方体,好一点的中间还能往两边拉一些,
npc如果进入小车车,那他们的模型就直接重叠了,
当然你可以讲究点直接把小车车内部模型做出来,碰撞体积重新设置,造一个乘客的行为
这里简单点 就直接hidden AND Teleport NPC 这一套作为上车的动作。
目前的状况是这样的
stateDiagram-v2
[*] --> NPC移动
NPC移动 --> 撞到小车车
撞到小车车 --> 一直原地踏步
一直原地踏步 --> 无法到达指定点,无法上车
NPC移动 --> 进入上车范围
进入上车范围 -->NPC进入小车车
NPC进入小车车 -->NPC隐身
NPC隐身 --> NPC移动到地图下方
这和Moba游戏的尸体行为类似,尸体沉入地图下方,之后destory。
不过这里就是单纯的放在那,没有其他操作。
NPC从小车车蹦出来
上一次蹦出来的是个石猴子,这里蹦出来的是个红蓝小人。
对应的就是UnitCar中的RemovePassengers Function

这里就是把大象放到冰箱里的反操作
然而直接这么执行会出现人物在地图下方呆着不动的情况
stateDiagram-v2
[*] --> NPC移动
NPC移动 --> 撞到小车车
撞到小车车 --> 一直原地踏步
一直原地踏步 --> 无法到达指定点,无法上车
NPC移动 --> 进入上车范围
进入上车范围 -->NPC进入小车车
NPC进入小车车 -->NPC隐身
NPC隐身 --> NPC移动到地图下方
NPC移动到地图下方 --> 执行RemovePassengers
执行RemovePassengers --> NPC显形
NPC显形 --> NPC一直呆在地图下方,小车车中集合清空,NPC没有出现
这里会发现 Teleport命令出现了问题没有执行成功,
原因是模型发生了重叠,两个小人和汽车重叠了,直接不执行Teleport命令
于是采用了蹦出来的设定
stateDiagram-v2
[*] --> NPC移动
NPC移动 --> 撞到小车车
撞到小车车 --> 一直原地踏步
一直原地踏步 --> 无法到达指定点,无法上车
NPC移动 --> 进入上车范围
进入上车范围 -->NPC进入小车车
NPC进入小车车 -->NPC隐身
NPC隐身 --> NPC移动到地图下方
NPC移动到地图下方 --> 执行RemovePassengers
执行RemovePassengers --> NPC显形
NPC显形 --> NPC一直呆在地图下方,小车车中集合清空,NPC没有出现
NPC一直呆在地图下方,小车车中集合清空,NPC没有出现 --> NPC和小车车发生碰撞
NPC和小车车发生碰撞 --> Teleport执行失败
NPC显形 --> NPC从小车车上方3米高的地方蹦出来
NPC从小车车上方3米高的地方蹦出来 --> 没有和小车车发生碰撞
没有和小车车发生碰撞 --> Teleport执行成功
蹦出来的NPC
