Unreal Engine07:Actor的物理特性

news2024/9/20 18:33:52

写在前面

UE4作为物理引擎,其中一大功能就是能够赋予物体以物理特性。这里将简单介绍一下Actor常用的一些物理特性设置。

一、基本操作

  • 这里介绍一些UE4的Editor基本操作;

1. Actor的变换

  • 将Actor类拖动到地图中,生成实例;
  • 鼠标选中Actor实例,此时的模式是位移变换,悬停鼠标到特定箭头可以让Actor沿箭头方向移动;

位移变换

  • 按空格键,此时转换为旋转变换,可沿三个轴进行旋转;

旋转变换

  • 再按空格键,此时为缩放变换,可以沿三个轴缩放Actor大小;

缩放变换

2. 快速转到素材所在路径

  • Actor的网格体和材质均为素材;

  • 点击细节面板中的放大镜按钮,即可打开网格体和材质所在的文件路径;

打开网格体或者材质所在的路径

3. 播放游戏选项

  • 播放游戏有不同的选项,如下:

播放游戏

  • 常用的选项对应的含义如下:
    • 选中的视口:播放游戏后,视角跳转到地图中的预设玩家视角,这也是真实游戏开始时的玩家视角;
    • 模拟:播放游戏后,视角并不跳转到玩家视角,仍停留在当前的视口;

二、碰撞

  • 碰撞是一种物理特性,当Actor在游戏中有了实际的体积,会占据一部分空间时,才会和其他Actor产生碰撞;

1. 设置碰撞形状

  • 双击网格体素材,即可打开网格体编辑窗口,可以为网格体增加或者修改碰撞的形状;

  • Actor碰撞的形状并不一定是Actor本身的形状,尤其是对于复杂形状的Actor来说,用一个简化的碰撞形状可以极大地降低碰撞时的计算损耗;

  • 点击碰撞->勾选简单碰撞可以查看当前网格体已设置的简单碰撞模型,显示为绿色线,如下:

简单碰撞

  • 勾选复杂碰撞可以查看当前网格体已有的复杂碰撞模型,显示为浅蓝色线,如下:

复杂碰撞

  • 对于静态网格体而言,碰撞均参照的是简单碰撞,不会启用复杂碰撞;
  • 可以为静态网格体添加新的的简单碰撞,点击碰撞,选择要添加的碰撞模型即可;

添加简单碰撞

  • 注意碰撞模型的形状是可以进行变换(包括位移、旋转和缩放)和叠加的;
  • 这里增加了一个倾斜的盒体碰撞;
    添加的简单碰撞模型

2. 打开模拟物理

  • 在细节面板中可以勾选模拟物理,否则碰撞不会生效;
  • 注意启用重力

模拟物理

  • 启用模拟选项播放游戏,可以看到Actor在重力的作用下,以立方体的碰撞模型立在了地面上,而不是以它本身的形状;

碰撞结果

三、Actor移动过程中的碰撞

  • 移动过程中的发生碰撞后,可以采用的措施有两种:
    • 重叠:碰撞的物体没有实际的碰撞效果,表现为穿模;
    • 阻挡:碰撞的物体产生实际的碰撞效果,阻碍Actor的前进;
  • 前面有提到,如果不勾选模拟物理,也不增加别的代码逻辑,将不能有阻挡的效果;
  • 这里将使用C++实现在不勾选模拟物理的情况下的阻挡效果;

1. Sweep概念

  • Sweep是扫描Actor的前进路线,并在碰撞时产生阻挡效果;
  • 能够在不启动模拟物理的情况下,实现实际的物体碰撞;
  • Sweep = true,扫描前进路线,并在碰撞时采用阻挡
  • Sweep = false,不扫描前进路线,在碰撞时采用重叠

2. 实现的功能函数

  • 实现的C++功能函数如下:

移动中的碰撞设置

  • 就是在移动函数AddActorLocalOffset中,启用Sweep参数,并将信息保存在一个碰撞结果类对象中;
  • 如果Sweep = false,则碰撞的HitResult.bBlockingHit = false

3. 碰撞的效果

  • 由于没有启用模拟物理,因此Actor并没有具备重力,仍然是在空中漂浮;
  • 将玩家视角移动到合适的位置,启用选中的视口播放游戏;
  • 当鼠标进入游戏中时,点击键盘上方数字1左边的按键,可以调出CMD控制台;
  • 输入show collision,可以显式地看到各个Actor的碰撞模型,这里Actor是和墙撞在一起了,如下:

碰撞过程

四、碰撞的细节

  • 每个Actor可以具备不同的碰撞属性;
  • 这些属性将决定两个Actor是产生重叠效果还是阻挡效果;
  • 在细节面板的Collision中可以看到碰撞属性:

碰撞属性

  • 碰撞预设就是决定是否会产生碰撞的效果:
    • 对象类型:指当前的Actor是什么类型;
    • 碰撞响应:指当前Actor和其他类型的Actor碰撞时,是产生重叠效果还是阻挡效果;
  • 可以用系统已经创建的碰撞预设,也可以自定义碰撞预设
  • 两个Actor碰撞时,只有相互的碰撞预设都是阻挡,实际的效果才会是阻挡,否则为重叠,也就是说单方面地设置为阻挡是无效的;

五、力和力矩

  • 力能使物体产生位移,力矩能使物体产生旋转;
  • 力和力矩均需要勾选模拟物理才能生效;
  • 为Actor添加力和力矩的实现如下:

添加力和力矩

  • 力和力矩均是按照世界坐标系的X轴、Y轴和Z轴来设置的;
  • 力是沿三个轴的方向位移,力矩是绕三个轴旋转;
  • 传入的参数均为FVector类型,对应(X, Y, Z)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/352286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

408强化(二)线性表纯享版

目录 一、顺序表(数组)和链表总览 二、考情分析 2.1 从历年考情可以看出,如果一个方法出现了第2次,一般是以下情况: 2.2 没有考过的地方 三、 共同操作或考法 3.1 多指针后移 3.2 逆置 3.3 空间换时间的操作 3.…

一分钟了解微信公众号服务器配置自动回复

1、建一个web服务工程 2、开放任意一个接口, 比如 /aaa/bbb/ccc 把接口路径配置在这里,ip为公网ip或域名,其他的参数默认,对入门选手没啥用 3、该接口允许get和post两种方式访问,接口需要对于访问方式编写两套逻辑…

ubuntu下如何使用wireshark抓包,保姆级教程

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。 一、安装wireshark 打开终端&…

教育行业如何高效使用知识库?

在线知识库的有效性在商业世界中是众所周知的。知识库通常用于客户支持,或管理员工的内部知识。在教育系统中,知识库的优势鲜为人知。知识库是可用于各种应用程序的多功能软件。特别是考虑到当前网络影响我们所有人生活的环境,教育越来越多地…

数据结构<堆>

🎇🎇🎇作者: 小鱼不会骑车 🎆🎆🎆专栏: 《数据结构》 🎓🎓🎓个人简介: 一名专科大一在读的小比特,努力学习编程是我唯一…

字符串匹配 - 模式预处理:朴素算法(Naive)(暴力破解)

朴素的字符串匹配算法又称为暴力匹配算法(Brute Force Algorithm),最为简单的字符串匹配算法。算法简介朴素的字符串匹配算法又称为暴力匹配算法(Brute Force Algorithm),它的主要特点是:没有预…

功率放大器科普知识(晶体管功率放大器的注意事项)

虽然功率放大器是电子实验室的常用仪器,但是很多人对于它却没有清晰的认识,下面就让安泰电子来为大家介绍功率放大器的科普内容以及使用注意事项,希望大家可以对功率放大器有清晰的认识。功率放大器可以把输入信号的功率放大,以满…

NFT Insider #86:A16z 领投,YGG 获得 1380 万美元融资,The Sandbox与《北斗神拳》合作

引言:NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据,艺术新闻类,游戏新闻类,虚拟世界类&#…

智能小车红外循迹原理

循迹电路循迹电路由收发一体的红外收发管P1,P2;电位器R18,R29;发光二极管D6,D7和芯片LM324等组成。一共有两路,对应的红外电位器用于调节灵敏度。LM234用于信号的比较,并产生比较结果输出给单片…

MySQL8.0 optimizer_switch变化

Optimizer_switch变量是支持对优化器行为的控制。是一组值标志,每个标志都有一个on或off的值,以指示是否启用或禁用相应的行为。 MySQL8.0里除了熟悉的hash join重大变化之外,其他方面也有优化。 mysql> SHOW VARIABLES LIKE OPTIMIZER_…

14 基数排序(桶排序)

文章目录1 基数排序基本思想2 基数排序的代码实现2.1 java2.2 scala3 基数排序总结1 基数排序基本思想 1) 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort&#…

【Python】循环语句(while,for)、运算符、字符串格式化

一、while循环Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:while 判断条件(condition):执行语句(statements)执行语句可以是单个语句或语句…

Git、小乌龟、Gitee的概述与安装应用超详细(组长与组员多人开发版本)

目录 一、概述 1.什么是Git? 2.Git历史来源 3.Git的优点? 4.什么是版本控制? 5.版本控制工具种类? 6.Git工作机制 7.Git、小乌龟、Gitee、凭据管理器的简单介绍 二、Git下载安装 下载Git 安装Git 安装完成后查看版本 三、下载小…

防水蓝牙耳机评测,值得入手的四款蓝牙耳机分享

提到蓝牙耳机,大家第一反应是音质跟佩戴舒适度要好,其实除了这两个功能,还有就是防水性能不能少,而且防水等级越高,耳机寿命也就越长,那么,我们该如何 选购一款好用的蓝牙耳机呢?下面…

Echarts 配置横轴竖轴指示线,更换颜色、线型和大小

第018个点击查看专栏目录本示例是描述如何在Echarts上配置横轴竖轴指示线,更换颜色、线型和大小。方法很简单,参考示例源代码。 文章目录示例效果示例源代码(共85行)相关资料参考专栏介绍示例效果 示例源代码(共85行&a…

数据的TCP分段和IP分片

本文简述下TCP分段和IP分片的区别与联系。 我们知道,用户空间的数据拷贝到内核空间的TCP发送缓冲区(这个是一个结构体,叫sk_buffer,简称skb)后就由内核网络协议栈做后续的封装和发送处理了,用户无需考虑下…

【Node.js】开发自己的包!

造包开发自己的包!初始化包的基本结构页面使用根据需要也可以将模块化拆分编写包的说明文档发布包把包发布在npm上删除已发布的包模块的加载机制内置模块的加载机制自定义模块的加载机制第三方模块的加载机制当目录作为模块时的加载机制开发自己的包! 初…

3|射频识别技术|第二讲:RFID系统的组成与工作原理|批注·上

https://blog.csdn.net/m0_57656758/article/details/128153964?spm1001.2014.3001.5501我国用无线射频识别技术实现药品管理的市场还是空白其运用具有较大的市场空间。药品运输及存储环境监控药品有效期监控提升用药安全策略血液制剂监控特殊、违禁药品监控商品价格监控药品生…

【Flutter】入门Dart语言:简单易懂的变量指南

文章目录一、概述二、详解1. 变量的声明2. 常量变量3.late 延迟初始化变量4. 变量的命名规则三、总结一、概述 “不抱有希望的人生是毫无意义的。” —— 阿卜杜勒阿齐兹 Dart中的变量是存储值的容器。它们可以是数字、字符串、布尔值或其他数据类型。变量在定义时必须指定类型…

网络原理 (1)

网络原理 文章目录1. 前言: 2. 应用层2.1 XML2.2 json2.3 protobuffer3. 传输层3.1 UDP3.1 TCP4. TCP 内部的工作机制 (重点)1. 确认应答 2.超时重传3. 连接管理3.1 建立联系 :三次握手3.2 断开连接 : 四次挥手4. 滑动窗口5. 流量…