UE基础 —— Actors and Geometry

目录

Placing Actors

使用放置Actor面板

使用快捷菜单放置Actor

使用拖放放置Actor

从类查看器放置Actor

Selecting Actors

简单选择

在世界大纲视图中选择Actor

区域选择(单击并拖动)

使用选择菜单

Transforming Actors

手动变换

交互式变换

调整Actor的枢轴点

键盘快捷方式

Actor Snapping

表面对齐

网格对齐

顶点对齐

Actor Mobility

Static Actors

Stationary Actors

Movable Actors

Grouping Actors

Actor打组

处理Actor组

Merging Actors


        任何能够放置到关卡的对象,即为Actor,如camera, Static Mesh, or player start;Actor支持3D变换(如translation, rotation, and scaling);他们可以被gameplay代码(C++或蓝图)创建和销毁;

  • 在C++内,AActor是所有actor的基类;

        为创建关卡,放置Actor到关卡,然后移动、缩放他们以创建环境,且添加脚本去创建他们的行为;

Placing Actors

        Actor 是一种可以放置在 关卡(Level)中的对象,从创建游戏环境的Static Meshes,到sounds, cameras, player characters等等;

  • 在关卡中放置Actor时,本质上是在创建一个基于该Actor的 实例(instance)对象;
  • 在关卡中放置Actor时,还会自动将他们添加到 世界大纲视图(World Outliner)中;
使用放置Actor面板

 

  1. 搜索,使用 搜索(Search) 栏按名称查找Actor;
  2. 过滤,使用这些选项卡快速切换Actor类型;
  3. 资产视图,该视图显示选择搜索和筛选后的所有资产;
    1. 资产(Asset)是引擎项目中的任意一块内容,所有的Actor都是资产;

使用快捷菜单放置Actor

 

使用拖放放置Actor

从类查看器放置Actor

 

Selecting Actors

简单选择

        选择Actor的最基本方法是在视口中 左键单击 它们;单击一个Actor将取消选择任何当前选中的Actor并选择新的Actor;

  • 如在单击新的(未选择的)Actor时按住 Ctrl️ 键,则新的Actor将添加到选择中;
  • 如在单击选中的Actor的同时按住 Ctrl️ 键,则将从选择中移除该Actor;

        此方法适用于选择少量Actor或分散在一个关卡中的多个孤立Actor,但在选择大量Actor时,此方法可能会比较低效且枯燥;

        当选择多个Actor时,可以将它们转换为一个组,在 细节(Details)面板中同时修改它们的属性;

在世界大纲视图中选择Actor

        世界大纲视图(World Outliner)是虚幻编辑器中的一个面板,其中包含关卡中所有Actor的层级树状图;可以像在视口中一样,选择和取消选择列表中的单个Actor;

也可配合Ctrl或Shift,来选择;

区域选择(单击并拖动)

        区域选择是一种快速方法,可在视口中的特定区域内选择或取消选择一组Actor;此类选择通过单击并拖动鼠标来执行,同时按住一个键或组合键(可选);根据在拖动鼠标时按住的键和鼠标按钮的组合,将选择或取消选择方框内的所有Actor;

透视图:

  • Ctrl+Alt+左击框选;

侧视图:

  • 左击并拖动,将当前选择替换为方框内包含的Actor;
  • 左击并拖动 + Shift,将方框内包含的Actor添加到当前选择中;
  • 左击并拖动 + Ctrl + Alt,从当前选择中移除方框内的Actor;

使用选择菜单

Transforming Actors

         变换(Transforming)Actor是指对其进行移动、旋转或缩放(也就是,调整Actor的位置、方向和/或大小);有两种变换Actor的方法:

  • 手动变换
  • 交互式变换
手动变换

        通过 Details 面板的"变换"(Transform)分段进行 手动变换;当在 Level Viewport 中选择一个或多个Actor时,可在此分段查看和编辑它们的 LocationRotation 

UE5中,`GetOverlappingActors` 是 `UPrimitiveComponent` 类的一个成员函数,其声明如下: ```cpp void UPrimitiveComponent::GetOverlappingActors(TArray<AActor*>& OutOverlappingActors, TSubclassOf<AActor> ClassFilter) const; ``` ### 使用方法 该函数用于检测碰撞框是否和其他 `Actor` 产生重叠,并将重叠的 `Actor` 存储在 `OutOverlappingActors` 数组中。第二个参数 `ClassFilter` 可以根据类型进行过滤,使不关注的类对象都被排除在外,避免不必要的对象被写入结果数组,从而节省性能。 以下是一个使用示例: ```cpp TArray<AActor*> OverLappingActors; // 假设 PressurePlate 是一个 UPrimitiveComponent 指针 PressurePlate->GetOverlappingActors(OverLappingActors, ANPCActor::StaticClass()); // 这里以 ANPCActor 类为例进行过滤 ``` 在这个示例中,`PressurePlate` 是一个 `UPrimitiveComponent` 指针,调用 `GetOverlappingActors` 函数并传入 `OverLappingActors` 数组和 `ANPCActor::StaticClass()` 作为过滤条件,这样只有 `ANPCActor` 类及其子类的 `Actor` 会被存储在 `OverLappingActors` 数组中。 ### 使用条件 - **调用对象**:该函数必须通过 `UPrimitiveComponent` 类的实例来调用,例如一个碰撞体组件。 - **过滤条件**:`ClassFilter` 参数是可选的,如果传入 `nullptr`,则不会进行过滤,所有重叠的 `Actor` 都会被存储在结果数组中。 - **组件激活**:调用该函数的 `UPrimitiveComponent` 必须是激活且具有碰撞检测功能的,否则无法检测到重叠的 `Actor`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值