【UE4】 第01讲 【MOBA制作日记】 角色攻击事件及发射物
2017-02-12 13:27
801 查看
制作MOBA的过程来到了一个全新的阶段,后续会逐步将功能转为UE4来实现。
已经放到App Store里的Demo只是具有基础的一些功能和效果,这一讲把角色及攻击技能部分用UE4来实现以下。
运行成功时是下面的样子:熊猫的攻击技能释放一个石球,石球向前抛出并落地
上面的Panda对应的FBX文件(百度云地址),导入过程参考UE4官方-实现角色,导入成功后你会有上图左下角的内容浏览器里的内容,Attack_Low是一个动画实例(AnimInstance)需要导入时自己命名,BP_PandaAnim是动画蓝图(BP开头的都是蓝图,这里也是自己命名遵循UE4的默认规则,创建过程参考UE4官方-实现角色),BP_PandaCharacter是APandaCharacter的蓝图(也是自己命名BP开头),Panda是网格物体,Panda2是材质,Panda3是贴图,Panda_Skeleton是骨架,Panda_Physics
Asset 是角色的物理资源(暂未用到可以先忽略)
编辑熊猫的Attack_Low技能动画,只需选中Attack_Low并右键选择编辑即可打开动画编辑器,如下
可以看到动画的每一帧,选中第13帧并添加一个命名为Low的事件,要在这个事件里发出攻击技能,保存并关闭。
后面就是关联这个事件和具体的技能函数调用了,参考
UE4官方-事件图表,选中BP_PandaAnim右键->编辑,打开下面的编辑器,成功的时候是下面的状态
按照官方的步骤,在动画图表里,建一个动画状态,并设置Attack_Low
动画图表成功以后,创建事件图表里的内容,把上面创建的Low事件->AnimNotify_Low和处理函数->PandaCharacter::Fire关联起来
APandaCharacter::Fire的定义如下:
成功之后保存并关闭,点击主界面上的播放,就能正常攻击了。
已经放到App Store里的Demo只是具有基础的一些功能和效果,这一讲把角色及攻击技能部分用UE4来实现以下。
运行成功时是下面的样子:熊猫的攻击技能释放一个石球,石球向前抛出并落地
上面的Panda对应的FBX文件(百度云地址),导入过程参考UE4官方-实现角色,导入成功后你会有上图左下角的内容浏览器里的内容,Attack_Low是一个动画实例(AnimInstance)需要导入时自己命名,BP_PandaAnim是动画蓝图(BP开头的都是蓝图,这里也是自己命名遵循UE4的默认规则,创建过程参考UE4官方-实现角色),BP_PandaCharacter是APandaCharacter的蓝图(也是自己命名BP开头),Panda是网格物体,Panda2是材质,Panda3是贴图,Panda_Skeleton是骨架,Panda_Physics
Asset 是角色的物理资源(暂未用到可以先忽略)
编辑熊猫的Attack_Low技能动画,只需选中Attack_Low并右键选择编辑即可打开动画编辑器,如下
可以看到动画的每一帧,选中第13帧并添加一个命名为Low的事件,要在这个事件里发出攻击技能,保存并关闭。
后面就是关联这个事件和具体的技能函数调用了,参考
UE4官方-事件图表,选中BP_PandaAnim右键->编辑,打开下面的编辑器,成功的时候是下面的状态
按照官方的步骤,在动画图表里,建一个动画状态,并设置Attack_Low
动画图表成功以后,创建事件图表里的内容,把上面创建的Low事件->AnimNotify_Low和处理函数->PandaCharacter::Fire关联起来
APandaCharacter::Fire的定义如下:
void APandaCharacter::Fire() { // 尝试发射物体。 if (ProjectileClass) { // 获取指定bone的transform const int32 RHandIndex = Mesh->GetBoneIndex(TEXT("Bip01-R-Hand")); const FTransform RHandTransform = Mesh->GetBoneTransform(RHandIndex); FVector MuzzleLocation = RHandTransform.GetTranslation(); FRotator MuzzleRotation; UWorld* World = GetWorld(); if (World) { FActorSpawnParameters SpawnParams; SpawnParams.Owner = this; SpawnParams.Instigator = Instigator; // 生成发射物。 ALowProjectile* Projectile = World->SpawnActor<ALowProjectile>(ProjectileClass, MuzzleLocation, MuzzleRotation, SpawnParams); if (Projectile) { // 设置发射物的初始轨道。 FVector LaunchDirection = MuzzleRotation.Vector(); LaunchDirection = RHandTransform.GetRotation().GetAxisX(); Projectile->FireInDirection(LaunchDirection); } } } }
成功之后保存并关闭,点击主界面上的播放,就能正常攻击了。
相关文章推荐
- 【UE4】 第05讲 【MOBA制作日记】 发射物方向调整
- 【TomoEngine】 第七讲 【MOBA制作日记二】 角色攻击
- 【UE4】 第06讲 【MOBA制作日记】 碰撞事件响应
- 【UE4】 第03讲 【MOBA制作日记】 FSocket联网及角色位置同步
- 【UE4】 第09讲 【MOBA制作日记】 隐藏默认创建的DefaultPawn
- 【UE4】 第10讲 【MOBA制作日记】 Matinee相机过场动画
- 【UE4】 第08讲 【MOBA制作日记】 实现全方位的行走
- 【TomoEngine】 第八讲 【MOBA制作日记三】 角色行走
- 【UE4】 第11讲 【MOBA制作日记】 HTC Vive设备安装使用及手柄控制漫游
- 【TomoEngine】 第五讲 【MOBA制作日记一】 角色
- 【TomoEngine】 第十二讲 【MOBA制作日记七】 角色电击效果
- 【UE4】 第02讲 【MOBA制作日记】 安卓打包
- 【UE4】 第12讲 【MOBA制作日记】 FSocket断线重连
- 【UE4】 第07讲 【MOBA制作日记】 实现自定义的行走控件
- 【UE4】 第04讲 【MOBA制作日记】 隐藏新建工程自带的操作控件
- 【TomoEngine】 第十讲 【MOBA制作日记五】 角色技能
- 【TomoEngine】 第十一讲 【MOBA制作日记六】 字体渲染
- 【TomoEngine】 第九讲 【MOBA制作日记四】 GLES2.0在iPhone5s真机上的纹理限制和GLSLES问题
- [传智播客学习日记]使用事件来制作登陆验证控件
- 华容道06--屏幕点击事件和角色间的碰撞