UE4笔记(_杰森大师)

UE4日常笔记


UE4C++笔记

增加基础移动(要是character类才能这么做,蹲的输出)
.h

protected:
void MoveForward(float value);
void MoveRight(float value);
void BeginCrouch();
void EndCrouch();

.cpp

#include"Components/InputComponent.h"
#include"GameFramework/PawnMovementCompoent.h"
AGameCharacter::AGameCharacter()
{
GetMovementComponent()->GetNavAgentPropertiesRef().bCanCrouch=true;//在编辑窗口设置cancrouch为真
}

void AGameCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);
	PlayerInputComponent->BindAction("jump", IE_Pressed, this, &AGameCharacter::Jump);//UE4自带了JUMP函数
	PlayerInputComponent->BindAction("Crouch",IE_Pressed,this,&AGameCharacter::BeginCrouch);
	PlayerInputComponent->BindAction("Crouch", IE_Released, this, &AGameCharacter::EndCrouch);
	PlayerInputComponent->BindAxis("MoveForward",this,&AGameCharacter::MoveForward);
	PlayerInputComponent->BindAxis("MoveRight",this,&AGameCharacter::MoveRight);
	PlayerInputComponent->BindAxis("CameraX",this,&AGameCharacter::AddControllerPitchInput);//UE4自带了XYZ的控制输出
	PlayerInputComponent->BindAxis("CameraY",this,&AGameCharacter::AddControllerYawInput);
}
void AGameCharacter::MoveForward(float value)
{
	AddMovementInput(GetActorForwardVector()*value);
}

void AGameCharacter::MoveRight(float value)
{
	AddMovementInput(GetActorRightVector()*value);
}

void AGameCharacter::BeginCrouch()
{
	Crouch();//movement自带有的函数
}

void AGameCharacter::EndCrouch()
{
	UnCrouch();//movement自带有的函数
}


增加粒子的方法
,h

.h
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "weapon")//UPROPERTY是包裹属性,EditDefaultsOnly是告诉程序这稚嫩在默认菜单上面编辑,blueprintreadonly告诉我们蓝图只能读取,category对其分类
	class UParticleSystem*MuzzleEffect;
	

.cpp

.cpp
#include"Particles/ParticleSystem.h"
FVector MuzzleLocation = MeshComponent->GetSocketLocation(MuzzleSocketName);//SapwnEmitterAtLocation需要获取位置自己定义一个
UGameplayStatics::SpawnEmitterAtLocation(GetWorld(), TraceEffect, MuzzleLocation);
UGameplayStatics::SpawnEmitterAttached(MuzzleEffect, MeshComponent, MuzzleSocketName);//meshComponent和muzzlesocketname都是自己定义的


线性检测

.cpp
AActor*MyOwner=GetOwner();//蓝图spawn函数里面有个owner持有者用主角self就可以使用
FVector Eyelocation;//发射位置
FVector EyeRotation;//发射角度
MyOwner->GetActorEyesViewPoint(Eyelocation,EyeRotation);//(这函数是获取actor双眼视角)获取发射位置和角度
if(GetWorld()->LineTraceSingleByChannel(Hit,Eyelocation,traceEnd,ECC_Visibility/*这个是检测的通道时可见的*/,QueryParams))//先定义相关的值,在这里进行调用
{
//在这里输入被射线检测到时输出的事件
}
发布了20 篇原创文章 · 获赞 1 · 访问量 2712

猜你喜欢

转载自blog.csdn.net/weixin_42295465/article/details/88242984