美文网首页UE4制作沙盒RPG
RPG游戏开发日志1:设置自定义角色和动画

RPG游戏开发日志1:设置自定义角色和动画

作者: 李维民0512 | 来源:发表于2019-04-06 00:54 被阅读0次

本项目同步上传于github和coding上,国内读者可以通过在coding下载项目,注意本套开发日志同步的是Tutorial分支,其他分支内容可能与日志内容不符。请注意

github地址:https://github.com/Liweimin0512/uRPG

coding地址:https://git.dev.tencent.com/JeremyBrett/uRPG.git

我们首先搞定角色的基础行为的操作,这里我们用第三人称模板新建项目。

需求分析

首先我们要搞清楚我们需求的角色移动方式是怎么样的:

1、按键wsad控制角色向前后左右四个方向移动

2、按住鼠标右键可以以角色为中心旋转摄像机

动画状态机设置

我们在mixamo下载一个角色,并下载法师的动作包。角色长这样:

模型展示

导入,不需要更改什么选项:

导入

之后我们整理一下目录结构:

character目录结构

然后我们将Attack相关的动作全选并批量创建动画蒙太奇:

创建动画蒙太奇

在之后我们创建一个移动的1D的混合空间,并命名为Bs_IdleWalkRun:

创建混合空间1D

水平坐标取名speed:

水平坐标

然后拖动3个动作加入到这里如下图所示,拖动绿点可以在上方预览效果:

动作设置

然后我们创建一个动画蓝图,取名就叫做AniBp_Eve。点开动画状态机,分别添加一个slot和一个状态机。slot在之后使用动画蒙太奇时候再讲。先看状态机:

添加一个Slot和States

进入状态机,这里我们新建一个状态,就是Idle和run状态:

iidle状态

这个状态很简单,就是将我们刚创建的BS添加到这里,并把speed参数作为变量保存起来,如下图所示:

Bs链接

在事件图表中,我们尝试获取到动画状态机所属的Pawn,并且获取到其速度,将这个速度赋值给上文中所说的Speed变量,就可以了。

设置速度

然后,我们复制一个ThirdPersonCharacter,取名叫做BP_CharacterBase,并将Mesh设为我们在自己的模型和动作。

设置Mesh

控制器与摄像机设置

好的我们新建一个控制器蓝图,取名叫做BP_PlayerController。

在此之前,我们先设置一下项目的输入:

输入设置

现在我们可以将BP_CharacterBase蓝图中的代码清空,并且将CameraSettings这里全部取消勾选,这里如果不清楚效果可以勾选之后运行一下比较一下差异就懂了。

CameraSettings

再然后我们将TargetArmLength拉远,并且设置一个Y轴的-45°的旋转,这样看起来会有一个向下的俯视效果,也是我比较习惯的游戏角度(是的,就是WowLike)

然后打开角色控制器,首先修改一下MouseInterface如下图所示:

MouseInterface

在BeginPlay事件中,我们获取到控制的Pawn,并将其存储在一个引用变量中,这里我将变量取名为Ref_ControlledCharacter(我习惯于将引用类型的变量标记Ref_前缀,这样方便查找和管理)。

Character引用

然后,当我们按下鼠标右键的时候,表示可以旋转,我们用一个布尔值变量记录当前能否旋转的状态。

能否旋转

然后是镜头的上下、左右旋转,这个也比较简单,先看上下移动,首先我们需要判断一下当前是否可以旋转镜头,并且输入值是否不为0,只有当这两个条件同时满足时候才进行之后的操作

Lookup判断

操作的内容也很简单,首先获取到角色蓝图中CameraBoom的Transform,然后旋转其Y坐标,旋转的值就是原值+输入值,注意这个Clamp节点,让旋转之后的值在一个区间之内,避免出现旋转过头的情况。当然,这个区间是我们可以调整的。之后将这个值MakeRotator并传入给CameraBoom调用的SetRelativeRotation方法即可

Lookup操作

左右旋转的操作同理,唯一的区别就在于左右旋转并不需要在一个区间内:

Turn操作

处理了镜头旋转,现在开始搞定移动,这里只贴出MoveForward的操作,MoveRight同理。首先判断输入值是否不为零,如果不为零就执行移动操作,这里的移动操作依然是获取当前摄像机的角度,然后根据角度和输入的值来决定角色的移动方向和移动值。

MoveForward操作

BUG解决及优化

值得注意的是BP_CharacterBase的CharacterMovement组件的OrientRotationtoMovement需要勾选

勾选OrientRotationtoMovement

并且BP_CharacterBase默认值中UseControllerRotationYaw需要取消勾选:

取消勾选UseControllerRotationYaw

运行,测试,完美。好的,这样这一期的任务就完成了。我们下期,再见!

相关文章

  • RPG游戏开发日志1:设置自定义角色和动画

    本项目同步上传于github和coding上,国内读者可以通过在coding下载项目,注意本套开发日志同步的是Tu...

  • unity3d中名词

    游戏开发常见术语 按游戏的题材可以分成: RPG:角色扮演游戏(Role-playing game),简称为RPG...

  • 游戏名词

    角色扮演(RPG) (包括A.RPG和S.RPG) RPG游戏是最能引起玩家共鸣的游戏类型。其诞生以ENIX的《勇...

  • #RPG、MOBA、卡牌游戏分析

    RPG游戏 RPG(角色扮演游戏)类游戏是一个庞大的游戏分类,在游戏的不断发展中百花齐放,但是各种rpg类游戏的游...

  • RPG游戏开发日志0:简介

    本项目同步上传于github和coding上,国内读者可以通过在coding下载项目,注意本套开发日志同步的是Tu...

  • 跟诸子学游戏 游戏类型

    RPG游戏:角色扮演游戏.经典如最终幻想. ACT游戏:动作游戏,也包含(STG)“射击游戏”和(FTG)“格斗游...

  • 工具类之LogUtils

    安卓开发离不开记录log日志,封装了一份简单的日志工具类,具有设置日志总开关,是否写入文件,日志过滤器和自定义标签...

  • RPG游戏数值计算过程

    1. 游戏时长 RPG类游戏进程通常都是围绕角色等级展开,可以简单的用角色升到满级所需的时间来等效游戏时长。 一般...

  • 人生的打怪升级之旅

    很多人都很喜欢玩角色扮演游戏(Role-playing game),简称为RPG。在RPG游戏中,玩家负责扮演某一...

  • RPG游戏开发日志5:选人界面

    本项目同步上传于github和coding上,国内读者可以通过在coding下载项目。也欢迎你加入我的UE4学习交...

网友评论

    本文标题:RPG游戏开发日志1:设置自定义角色和动画

    本文链接:https://www.haomeiwen.com/subject/ptqliqtx.html