虚幻中和碰撞相关联的一些函数

SetCollisionObjectType

是虚幻引擎中的一个方法,用于设置碰撞组件的碰撞对象类型。它定义了该碰撞体在物理引擎中的类别,以便确定其如何与其他物体发生碰撞和交互。

  • ECollisionChannel: 这是一个枚举类型,定义了不同的碰撞通道(如 ECC_WorldStaticECC_PawnECC_Vehicle 等)。这些通道用于描述不同类型的物体,帮助物理引擎决定如何处理碰撞。
  • 设置对象类型: 通过调用 SetCollisionObjectType,你可以指定碰撞组件的对象类型,从而控制它在游戏世界中如何与其他对象发生碰撞

假设你有一个 UCapsuleComponent,你想将其设置为碰撞通道 ECC_WorldDynamic,表示它会与动态世界物体发生碰撞。

CapsuleComponent->SetCollisionObjectType(ECC_WorldDynamic);

 

SetCollisionResponseToChannel

参数说明

  • Channel (ECollisionChannel): 指定你要设置响应的碰撞通道。ECollisionChannel 是一个枚举类型,定义了各种碰撞通道(如 ECC_WorldStatic, ECC_Pawn, ECC_Vehicle 等)。

  • NewResponse (ECollisionResponse): 指定新的碰撞响应类型。ECollisionResponse 是一个枚举类型,定义了不同的响应行为,如 ECR_Ignore(忽略)、ECR_Overlap(重叠)、ECR_Block(阻挡)等。

碰撞响应类型

  • ECR_Ignore: 忽略与该通道的碰撞体的碰撞,不会触发碰撞事件。
  • ECR_Overlap: 当与该通道的碰撞体发生重叠时触发重叠事件,但不会阻挡物体的移动。
  • ECR_Block: 阻挡与该通道的碰撞体,物体会在碰撞时停止移动。

示例

假设你有一个 UBoxComponent,并希望它对 ECC_Pawn 通道的响应设置为 ECR_Overlap,以便在与玩家角色发生重叠时触发重叠事件:

// 在头文件中声明碰撞组件
UPROPERTY(VisibleAnywhere, Category = "Collision")
UBoxComponent* BoxComponent;

// 在源文件的构造函数中初始化和设置碰撞组件
AMyActor::AMyActor()
{
    PrimaryActorTick.bCanEverTick = true;

    // 创建并配置碰撞组件
    BoxComponent = CreateDefaultSubobject<UBoxComponent>(TEXT("BoxComponent"));
    RootComponent = BoxComponent;

    // 设置碰撞响应
    BoxComponent->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
}

 

SetCollisionResponseToAllChannels

参数说明

  • NewResponse (ECollisionResponse): 指定新的碰撞响应类型。ECollisionResponse 是一个枚举类型,定义了碰撞体与所有碰撞通道的响应行为,如 ECR_Ignore(忽略)、ECR_Overlap(重叠)、ECR_Block(阻挡)等。

碰撞响应类型

  • ECR_Ignore: 碰撞体会忽略与所有碰撞通道的碰撞,不会触发任何碰撞事件。
  • ECR_Overlap: 碰撞体会与所有碰撞通道发生重叠,但不会阻挡物体的移动。
  • ECR_Block: 碰撞体会阻挡所有碰撞通道中的物体,触发碰撞时会阻挡其移动。

示例

如果你想将一个 USphereComponent 的碰撞响应设置为 ECR_Block 对所有通道,即该碰撞体会阻挡所有碰撞通道中的物体:

// 在头文件中声明碰撞组件
UPROPERTY(VisibleAnywhere, Category = "Collision")
USphereComponent* SphereComponent;

// 在源文件的构造函数中初始化和设置碰撞组件
AMyActor::AMyActor()
{
    PrimaryActorTick.bCanEverTick = true;

    // 创建并配置碰撞组件
    SphereComponent = CreateDefaultSubobject<USphereComponent>(TEXT("SphereComponent"));
    RootComponent = SphereComponent;

    // 设置对所有通道的碰撞响应
    SphereComponent->SetCollisionResponseToAllChannels(ECR_Block);
}

 

SetCollisionEnabled

参数说明

  • Channel (ECollisionChannel): 指定你要设置响应的碰撞通道。ECollisionChannel 是一个枚举类型,定义了各种碰撞通道(如 ECC_WorldStatic, ECC_Pawn, ECC_Vehicle 等)。

  • NewResponse (ECollisionResponse): 指定新的碰撞响应类型。ECollisionResponse 是一个枚举类型,定义了不同的响应行为,如 ECR_Ignore(忽略)、ECR_Overlap(重叠)、ECR_Block(阻挡)等。

碰撞响应类型

  • ECR_Ignore: 忽略与该通道的碰撞体的碰撞,不会触发碰撞事件。
  • ECR_Overlap: 当与该通道的碰撞体发生重叠时触发重叠事件,但不会阻挡物体的移动。
  • ECR_Block: 阻挡与该通道的碰撞体,物体会在碰撞时停止移动。

示例

假设你有一个 UBoxComponent,并希望它对 ECC_Pawn 通道的响应设置为 ECR_Overlap,以便在与玩家角色发生重叠时触发重叠事件:

// 在头文件中声明碰撞组件
UPROPERTY(VisibleAnywhere, Category = "Collision")
UBoxComponent* BoxComponent;

// 在源文件的构造函数中初始化和设置碰撞组件
AMyActor::AMyActor()
{
    PrimaryActorTick.bCanEverTick = true;

    // 创建并配置碰撞组件
    BoxComponent = CreateDefaultSubobject<UBoxComponent>(TEXT("BoxComponent"));
    RootComponent = BoxComponent;

    // 设置碰撞响应
    BoxComponent->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
}

虚幻引擎中的TS(TypeScript)是一种基于JavaScript的静态类型语言,用于编写游戏逻辑和其他脚本。下面是一些常用的语法和函数: 1. 类和接口: - class:定义一个类 - interface:定义一个接口 2. 变量和类型: - var:定义变量 - let:定义一个块级作用域的变量 - const:定义一个常量 - boolean:布尔类型 - number:数字类型 - string:字符串类型 - any:任意类型 - void:无返回值类型 - null:空类型 - undefined:未定义类型 3. 函数: - function:定义一个函数 - 参数类型:在函数定义时指定参数类型 - 返回值类型:在函数定义时指定返回值类型 - 可选参数:使用问号(?)表示可选参数 - 默认参数:使用等号(=)表示默认参数 - 剩余参数:使用省略号(...)表示剩余参数 4. 控制流语句: - if/else:条件语句 - switch:多条件语句 - while:循环语句 - do/while:至少执行一次的循环语句 - for:循环语句 5. 操作符: - +:加法 - -:减法 - *:乘法 - /:除法 - %:取模 - ++:自增 - --:自减 - &&:逻辑与 - ||:逻辑或 - !:逻辑非 - ==:等于 - !=:不等于 - >:大于 - <:小于 - >=:大于等于 - <=:小于等于 6. 常用函数: - console.log():输出到控制台 - Math.random():生成随机数 - Math.floor():向下取整 - Math.ceil():向上取整 - Math.round():四舍五入 - parseFloat():将字符串转换为浮点数 - parseInt():将字符串转换为整数 以上是一些常用的虚幻中TS的语法和函数,具体使用可以参考官方文档或者在线教程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值