从零造个塔 从建模讲到游戏

175 阅读2分钟

前言

从Blender建模开始,到UE4游戏逻辑复现MOBA游戏中的塔机制。

正文

建模和动作

一杯茶,一包烟,一个动作做一天。

Blender插件设置

B/read/cv9051987
B站相关信息
其中的SendToUE 需要GITHUP和EPIC进行授权,需要翻墙

设计模型

风格想到了尼尔 实际上做起来很省钱

45°视角

image.png

俯角

image.png

仰角

image.png

加了材质

事实上切换到UE4后出现 网格体错位和材质缺失 需要人工进行调整材质
遇到网格体错位,目前只能祈祷

image.png

设计动作

默认状态

z4a1z-y3r41.gif

攻击状态

vohpk-ilmeo.gif

死亡状态

93nt9-m3h5h.gif

上传到UE4时动作出问题

 只能单个上传 多个动作会互相重叠覆盖
 原因未知

UE4逻辑

塔逻辑

graph TD
塔默认不动 --> 触发范围进入非同阵营单位
触发范围进入非同阵营单位 --> 塔转向该单位自动攻击
塔转向该单位自动攻击 --> 该单位在触发范围内
该单位在触发范围内 --> 塔转向该单位自动攻击
塔转向该单位自动攻击 --> 该单位离开触发范围
该单位离开触发范围 --> 触发范围无非同阵营单位
触发范围无非同阵营单位 --> 塔默认不动
该单位离开触发范围 --> 触发范围存在其他非同阵营单位
触发范围存在其他非同阵营单位 --> 塔转向该单位自动攻击

触发器实现

用个看不见的圆柱体实现

image.png

主要实现两个功能 单位进入和离开
通过这个集合 之后可以实现全体攻击的塔

image.png

Tick时间

自动攻击在Tick中实现
当然可以通过重叠事件,做个调度,来控制自动攻击 那是后话了

image.png

本单位死亡就停止判断
没有单位在集合里就停止判断
再把集合第一个进行阵营判断 也好理解就是第一个进入范围的单位
如果同阵营 直接移除 调用封装后的技能

image.png

优化后的技能调度

image.png

使用类来进行调读 上一次是index来着 这次可视化高些

塔的自动攻击技能设计

技能调度后的包装

image.png

AUTOShoot 主要内容

平滑旋转到单位

image.png

使用射击技能

image.png

平滑旋转到单位功能之后再讲 需要画个图 目前发现有四种情况处理,篇幅长

塔弹道攻击技能设计

对GETSKILL进行重载

目前喜欢使用状态PARAM控制动画

image.png

攻击动画蓝图

image.png

两个通知 30帧的通知用于发射子弹 58帧的用于结束状态
对应通知事件

image.png

SHOOT中的事件调度

image.png

这里有个BUG 得需要把参数加个ACTOR进行个体识别
以后做兵线系统时在优化

ShootOne 事件

顾名思义就是创建BULLET Actor

image.png

Tick事件中的结算伤害

ImposedActor[] 用于存放子弹的碰撞单位

image.png

Bullet ACTOR设计

逻辑就是上几篇的弹道技能一样
无非加了自动追踪

image.png

tick事件中的飞行内容

image.png

塔死亡动画逻辑设计

略 上一篇相关内容逻辑大致

结尾

发个动画助助兴

n3bgi-uc25o.gif

下一篇就做兵线了
八成又是一个模型捏一天