ue4c++日记3(碰撞报告碰撞位置|力和扭矩)

目录

代码速查

根据世界方向/局部方向移动

 根据世界方向/局部方向旋转

加力加扭矩 

1碰撞并报告碰撞位置 

         两个设为阻挡才会阻挡,其中一个是重叠就会重叠

2例子:旋转前进!/原地踏步?

3增加力和扭矩

1.头文件

2.cpp文件 

3.放模型

4.模拟物理


代码速查

根据世界方向/局部方向移动


AddActorWorldOffset(Initial_Direction, true, &HitResult);//FVector|是否开启扫描|扫描结果

AddActorLocalOffset(Initial_Direction, true, &HitResult);

 根据世界方向/局部方向旋转

AddActorWorldRotation

AddActorLocalRotation

加力加扭矩 

	StaticMesh->AddForce(InitialForce);
	StaticMesh->AddTorque(InitialTorque);

 输出碰撞坐标

		UE_LOG(LogTemp, Warning, TEXT("@@f Hit@:x=%f,y=%f,z=%f"),HitResult.Location.X, HitResult.Location.Y, HitResult.Location.Z);
		UE_LOG(LogTemp, Warning, TEXT("@@s Hit@:x=%s,y=%s,z=%s"),*FString::SanitizeFloat(HitResult.Location.X), *FString::SanitizeFloat(HitResult.Location.Y),* FString::SanitizeFloat(HitResult.Location.Z));

 


碰撞并报告碰撞位置 

以下

%f写法数值更详细

	FHitResult HitResult;//声明变量
	AddActorLocalOffset(Initial_Direction, true, &HitResult);//添加对象移动/移动式是否开启扫描/扫描(碰撞)结果

	if (HitResult.bBlockingHit) {
		UE_LOG(LogTemp, Warning, TEXT("@@f Hit@:x=%f,y=%f,z=%f"),HitResult.Location.X, HitResult.Location.Y, HitResult.Location.Z);
	}
	if (HitResult.bBlockingHit) {
		UE_LOG(LogTemp, Warning, TEXT("@@s Hit@:x=%s,y=%s,z=%s"),*FString::SanitizeFloat(HitResult.Location.X), *FString::SanitizeFloat(HitResult.Location.Y),* FString::SanitizeFloat(HitResult.Location.Z));
	}

  结果

 

 两个设为阻挡才会阻挡,其中一个是重叠就会重叠

例子:旋转前进!/原地踏步?

使用世界坐标-前进+旋转操作,对象将会旋转前进;

但是,

使用对象坐标-前进+旋转操作,对象将头旋转着朝尾巴前进,原地踏步。

增加力和扭矩

力是直线方向的力,扭矩是绕某几个轴旋转所施加的力。

1.头文件

公有

	/// <summary>
	/// 力和扭矩
	/// </summary>
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyValues")
		FVector InitialForce;//力
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyValues")
		FVector InitialTorque;//扭矩

2.cpp文件 

头文件


#include "Components/StaticMeshComponent.h"

构造函数初始化

	InitialForce = FVector(0);
	InitialTorque = FVector(0);

BeginPlay 

	StaticMesh->AddForce(InitialForce);
	StaticMesh->AddTorque(InitialTorque);

3.放模型

 不放模型用不了模拟物理

 

4.模拟物理

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值