添加一个角色与动画蓝图
这里使用的是虚幻商城官方的Gideon
设置角色旋转方向
首先补充input
void ASCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); PlayerInputComponent->BindAxis("MoveForward",this,&ASCharacter::MoveForward); PlayerInputComponent->BindAxis("MoveRight",this,&ASCharacter::MoveRight); PlayerInputComponent->BindAxis("Turn",this,&APawn::AddControllerYawInput); PlayerInputComponent->BindAxis("Lookup",this,&APawn::AddControllerPitchInput); }
在.h文件内添加
void MoveRight(float Value);
并且在.cpp内添加
void ASCharacter::MoveRight(float Value) { AddMovementInput(GetActorRightVector(),Value); }
在MoveForward内添加
void ASCharacter::MoveForward(float Value) { FRotator ControlRot = GetControlRotation(); ControlRot.Pitch = 0.0f; ControlRot.Roll = 0.0f; AddMovementInput(ControlRot.Vector(),Value); }
效果图
最终效果:角色跟随鼠标选择而旋转
创建魔法攻击
创建一个类,名字为SMagic
进入Magic.h,在保护项内创建组件
UPROPERTY(VisibleAnywhere) USphereComponent* SphereComp; UPROPERTY(VisibleAnywhere) UParticleSystemComponent* EffectComp; UPROPERTY(VisibleAnywhere) UProjectileMovementComponent* MovementComp;
代码部分具体可看Unreal Engine Rider 代码使用记录
在.cpp内添加功能
修改SCharacter
在角色内暴露一个actor类
UPROPERTY(EditAnywhere) TSubclassOf<AActor> ProjectileClass;
添加一个void
void PrimaryAttack();
在Input内新建一个Action层
PlayerInputComponent->BindAction("PrimaryAttack",IE_Pressed,this,&ASCharacter::PrimaryAttack);
写完void功能
void ASCharacter::PrimaryAttack() { FVector HandLocation = GetMesh()->GetSocketLocation("Muzzle_01"); FTransform SpawnTM = FTransform(GetControlRotation(),HandLocation); FActorSpawnParameters SpawnParams; SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; GetWorld()->SpawnActor<AActor>(ProjectileClass,SpawnTM,SpawnParams); }