05_ue4进阶末日生存游戏开发[旋转的实现]

2023-11-09 01:50

本文主要是介绍05_ue4进阶末日生存游戏开发[旋转的实现],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pitch,yaw,roll的旋转方式

1.怎样用鼠标控制人物旋转呢?

进入小白人的蓝图,单机self。

 这个打勾,使用controller的旋转yaw

测试,成功。但是这种方式很生硬。添加一点延迟效果,就可以了。

先勾掉。

 点击charactermovement组件

 为什么这个组件没有和上面的组件在一起呢,因为这个运动组件是抽像的,没有实体的。

 调小旋转速率到300,第一个打勾,第二个取消勾。

 继续优化,当我鼠标转到一定程度,小人才开始转,鼠标微小转动,小人不转。也就是说人物朝向与playercontroller的朝向有一定角度偏差,人物才开始转动。

所以该如何实现呢?

思路:如果当角度大于80°时,会打这个勾,人物就开始转动。当角度小于80°时,这个勾就取消,人物就停止转动。

1)获得人物的朝向,我们可以用碰撞盒子的朝向来代替人物的朝向。(也可用别的朝向,这个没有标准做法)

 添加人物旋转图表

拖入碰撞盒子

获得朝向

2)获取控制这个人物的controller 

这个不太好,因为这个方法作用范围有点大,可以获得别的角色的控制器。

所以我们用这个

得到controller的朝向

 3)获得两个朝向的角度差

4)这个差是一个向量,我们将其分解开

 当yaw的角度绝对值大于80,就旋转 

5)每一帧都要判断夹角,所以要添加每一帧事件,然后判断是否需要旋转。

6)将运动组件拉入蓝图,设置参数,真的打勾,假的就取消勾

 

7)编译,测试,但是这样依然很死板,我们希望小白人转向的时候一直转到夹角为0.

 编译测试,奔跑的情况下会遇到这种情况,controller与小人移动的方向不一样。

 8)所以我们应该在小白人移动的时候,让小白人与我们的controller同向。(移动时候打勾)

以下是小白人的原始行动代码

 我们要进行改进

首先获得事件输入的名称。

 判断这两个输入是否不为0,如果其中一个不为0,那么就说明小白人是在移动,所以小白人的方向要跟随controller的方向。

为每一帧事件添加一个sequence节点,就是第一次执行0,第二次执行1,依次+1并循环。

 

then1连接我们新写的分支。

测试成功

为了让蓝图更简洁,让控制角度的蓝图折叠起来

 变成了大的节点

 重命名

 同理,压缩了另一个大节点

 

 

这篇关于05_ue4进阶末日生存游戏开发[旋转的实现]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373531

相关文章

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

MySQL8.0设置redo缓存大小的实现

《MySQL8.0设置redo缓存大小的实现》本文主要在MySQL8.0.30及之后版本中使用innodb_redo_log_capacity参数在线更改redo缓存文件大小,下面就来介绍一下,具有一... mysql 8.0.30及之后版本可以使用innodb_redo_log_capacity参数来更改

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后