UE4 蓝图 模拟运输单位过程 《把大象放冰箱里再拿出来要几步》

548 阅读2分钟

UE4 蓝图 模拟运输单位过程 《把大象放冰箱里再拿出来要几步》

准备:一辆小车车 可以移动的NPC单位

把NPC移动到小车车处

首先需要获取点击的位置

image.png

然后执行Move to location or actor 操作

image.png

最后放到车上
这里执行移动到小车上需要对object的有效性进行判断,不然NPC进入小车车后,
SelectedUnit这个集合会被Clear,然后回来一个空指针访问,
虽然不崩溃,但后台会记入这个情况。
如果你overlap选择false
stateDiagram-v2
[*] --> NPC移动
NPC移动 --> 撞到小车车
撞到小车车 --> 一直原地踏步
一直原地踏步 --> 无法到达指定点,无法上车
这种情况就是增加判断范围,在NPC达到指定点前就开始判断,消除撞到小车车这个情况
    stateDiagram-v2
    [*] --> NPC移动
    NPC移动 --> 撞到小车车
    撞到小车车 --> 一直原地踏步
    一直原地踏步 --> 无法到达指定点,无法上车
    NPC移动 --> 进入上车范围
    进入上车范围 -->NPC进入小车车

NPC上了小车车

 总体逻辑和把大象放到冰箱里一个道理
 需要把选择的NPC ,selectedunits这个集合里的单位一个个放到Car的Passengers集合里。
 如果命中的单位是小车车,同时车里还能放入单位就进行下一步集合单位移动操作
 

image.png

image.png

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

NPC从小车车蹦出来

 上一次蹦出来的是个石猴子,这里蹦出来的是个红蓝小人。
 对应的就是UnitCar中的RemovePassengers Function
 

image.png

  这里就是把大象放到冰箱里的反操作
  然而直接这么执行会出现人物在地图下方呆着不动的情况
    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

image.png