遍匈 / UE4縮殻 /

壓UE4嶄園亟C++旗鷹陣崙叔弼

<貧匯准 和匯准>
輝低塰佩厘断貧肝恂頼議?朕?低辛嬬氏吭紛欺厘断卞強議父崧字珊頁潮範議椎倖父崧字?宸倖潮範議父崧字辛參徭喇敬岪。宸匯准?厘断勣聞誼蝕兵議叔弼頁厘断議匯倖Avatar窃議糞箭斤嵆?旺拝聞喘囚徒陣崙厘断議叔弼。

幹秀嗄老庁塀窃

1. 幹秀嗄老庁塀議化帶泌和?
1) 泣似猟周 --> 仟秀C++窃。
2) 僉夲Game Mode?嗄老庁塀?。
3) 繍凪凋兆葎“MyGameMode1”。
4) 泣似幹秀窃。
焚担頁GameMode?GameMode淫根阻光嶽光劔議嗄老号夸才斑嗄老哈陪宙峰宸倖嗄老頁奕担螺議。

2. 幹秀嗄老庁塀議清夕
UE4氏徭強尼強VS蝕窟桟廠?隼朔厘断栖幹秀MyGameMode1清夕?

1) 泌夕侭幣荷恬?
2) 野亟清夕兆各?厘宸戦頁“BP_GameMode1”?隼朔泣挫。
3) 貫嘔迦議聾准中医嶄議Default Pawn Class議和性僉?嶄僉夲貧肝厘断幹秀挫議叔弼清夕BP_Avatar。
焚担頁Default Pawn Class?Default Pawn Class祥頁瓜叔弼聞喘議椎匯窃麗悶?匆祥頁辛參瓜螺社陣崙議Actor叔弼。

4) 泣似垢醤生議隠贋?隼朔曜竃。

孖壓塰佩嗄老議三?低辛參心欺厘断聞喘議父崧遊厮将頁BP_Avatar叔弼侭淫根議父崧遊阻。徽頁孖壓珊頁陣崙音阻叔弼?咀葎厘断珊短譜崔陣崙匂補秘。

譜崔殊霞囚徒補秘

1) 泣似垢醤生議譜崔?隼朔泣似?朕譜崔。


2) 俊和栖?泣似恣迦中医議補秘?隼朔壓Axis Mappings?梓囚啌符?朔中泣似紗催?壅泣似念中議弌眉叔侘婢蝕。補秘匯倖兆葎Forward?念序?議梓囚啌符?隼朔和中僉夲W囚。俊彭壅耶紗匯倖兆葎Back?朔曜?議梓囚啌符?隼朔和中僉夲D囚。Left?恣卞?斤哘A囚?Right?嘔卞?斤噐D囚。
3) 岷俊購液乎完笥參隠贋譜崔。

宥狛C++旗鷹陣崙叔弼佩恠

1) 孖壓嬉蝕低議VS戦中議Avatar.h更夛匂?耶紗励倖撹埀痕方議蕗苧?
//耶紗泌和眉倖撹埀痕方?喘噐叔弼陣崙?
void SetupPlayerInputComponent(class UInputComponent* InputComponent) override; //顕亟倡痕方?輝嗤補秘議扮昨瓜距喘參鰯協孔嬬
void MoveForward(float amount);
void MoveBack(float amount);
void MoveLeft(float amount);
void MoveRight(float amount);
旺評茅圻嗤議宸匯佩?
virtual void SetupPlayerInputComponent(class UInputComponent* InputComponent) override;

2) 隼朔壓Avatar.cpp頼撹痕方悶協吶?
//嗄老蝕兵扮瓜距喘參鰯協譜姥補秘孔嬬
void AAvatar::SetupPlayerInputComponent(class UInputComponent* InputComponent)
{
 check(InputComponent); //殊臥腎峺寞
 InputComponent->BindAxis("Forward", this, &AAvatar::MoveForward);
 InputComponent->BindAxis("Back", this, &AAvatar::MoveForward);
 InputComponent->BindAxis("Left", this, &AAvatar::MoveRight);
 InputComponent->BindAxis("Right", this, &AAvatar::MoveRight);
}
貧中議InputComponent::BindAxis(...)痕方喘噐繍梓囚佚連噐痕方距喘鰯協。箭泌輝螺社梓和W囚?哈陪祥氏殊霞欺嗤厘断岻念凋兆議"Forward"梓囚佚連?隼朔徭強肇距喘輝念窃議AAvatar::MoveForward(float amount)痕方。凪万眉倖梓囚匆頁泌緩塰恬。侭參俊和栖協吶挫宸膨倖痕方祥辛參阻?宸戦議歌方amount頁譜姥補秘楚将狛嚥scale屢核朔誼竃議潤惚?
void AAvatar::MoveForward(float amount)
{
 // Controller陣崙匂輝念啜嗤乎actor。箭泌泌惚輝念叔弼棒阻?actor音贋壓阻?緩扮Controller陣崙匂短嗤啜嗤販採匯倖actor?椎担泌惚厘断珊?肇陣崙万?祥氏竃危。
 // 泌惚陣崙匂短嗤啜嗤actor賜宀卞強楚頁0?音嬬序秘乎痕方。
 if (Controller && amount)
 {
 // GetActorForwardVector()函誼叔弼?念議?楚
 FVector fwd = GetActorForwardVector();
 // 厘断距喘AddMovementInput栖壓‘fwd’?楚議圭?貧卞強叔弼‘amount’倖汽了
 AddMovementInput(fwd, amount);
 }
}
void AAvatar::MoveBack(float amount)
{
 if (Controller && amount)
 {
 // GetActorForwardVector()函誼叔弼?念議?楚?紗貧減催?乎?楚祥?朔?侭參函誼阻叔弼?朔議?楚
 FVector back = -GetActorForwardVector();
 AddMovementInput(back, amount);
 }
}
// 朔中議痕方窃貌念中?載否叟峡
void AAvatar::MoveLeft(float amount)
{
 if (Controller && amount)
 {
 FVector left = -GetActorRightVector();
 AddMovementInput(left, amount);
 }
}
void AAvatar::MoveRight(float amount)
{
 if (Controller && amount)
 {
 FVector right = GetActorRightVector();
 AddMovementInput(right, amount);
 }
}

譜崔殊霞報炎卞強

俊和栖厘断喘及屈化揖劔議荷恬嬉蝕?朕譜崔旺耶紗Yaw才Pitch梓囚佚連?蛍艶斤哘議頁報炎議X恫炎才Y恫炎。

廣吭Yaw議吭房頁汎抱已傴廬?Pitch議吭房頁汎罪?已傴廬。需和夕?

宥狛C++旗鷹陣崙叔弼承遊

壓Avatar.h低俶勣耶紗曾倖痕方蕗苧?
void Yaw(float amount);
void Pitch(float amount);
隼朔壓Avatar.cpp嶄糞孖万断?
void AAvatar::Yaw(float amount)
{
 if (Controller && amount)
 {
 // AddControllerYawInput()痕方喘噐個延陣崙匂議Yaw延楚?軸奐紗忿?已傴廬楚。
 // GetWorld()痕方函誼弊順峺寞UWorld*?宥狛弊順峺寞距喘GetDeltaSeconds()函誼耽屐債継議扮寂。
 // 岻侭參勣核參耽屐債継議扮寂?頁葎阻聞誼耽匯‐昼/脅奐紗200.0f * amount議個延楚。
 // 泌惚音核參耽屐債継議扮寂?椎担耽匯‐屐/脅氏奐紗200.0f * amount議個延楚。?廣吭喇噐耽昼籌半楚音揖?侭參耽昼議屐方音匯協頁耕協議。?
 // 宥狛屐方栖陣崙延楚?椎担嗄老心軟栖祥音椎担送芥。編??字徨來嬬挫議扮昨嗄老叔弼強恬祥儻堀?字徨來嬬餓議扮昨嗄老叔弼強恬祥蛸?宸斤噐螺社巷峠宅?
 AddControllerYawInput(200.f * amount * GetWorld()->GetDeltaSeconds());
 }
}
// 和中議痕方嚥貧中跡揖?音壅弩峰
void AAvatar::Pitch(float amount)
{
 if (Controller && amount)
 {
 AddControllerPitchInput(200.f * amount * GetWorld()->GetDeltaSeconds());
 }
}
壓void AAvatar::SetupPlayerInputComponent(class UInputComponent* InputComponent)痕方悶議和中耶紗宸曾訳囂鞘繍補秘佚連才痕方鰯協?
InputComponent->BindAxis("Yaw", this, &AAvatar::Yaw);
InputComponent->BindAxis("Pitch", this, &AAvatar::Pitch);

頼屁旗鷹薮竃

Avatar.h頼屁旗鷹泌和?
#pragma once
#include "GameFramework/Character.h"
#include "Avatar.generated.h"
UCLASS()
class DEMO1_API AAvatar : public ACharacter
{
 GENERATED_BODY()
 //耶紗泌和励倖撹埀痕方?喘噐叔弼陣崙?
 void SetupPlayerInputComponent(class UInputComponent* InputComponent) override; //顕亟?嗄老蝕兵扮瓜距喘參鰯協譜姥補秘孔嬬
 void MoveForward(float amount);
 void MoveBack(float amount);
 void MoveLeft(float amount);
 void MoveRight(float amount);
 void Yaw(float amount);
 void Pitch(float amount);
public:
 // 譜崔叔弼奉來議潮範峙
 AAvatar();
 // 輝嗄老蝕兵議扮昨瓜距喘
 virtual void BeginPlay() override;
 
 // 耽屐瓜距喘
 virtual void Tick( float DeltaSeconds ) override;
};

Avatar.cpp頼屁旗鷹泌和?
#include "Demo1.h"
#include "Avatar.h"
// 譜崔潮範峙
AAvatar::AAvatar()
{
 // 譜崔宸倖叔弼耽屐距喘Tick()。 泌惚音俶勣議三低辛參購渠万參戻互來嬬。
 PrimaryActorTick.bCanEverTick = true;
}
// 輝嗄老蝕兵扮距喘万
void AAvatar::BeginPlay()
{
 Super::BeginPlay();
}
// 耽屐瓜距喘
void AAvatar::Tick( float DeltaTime )
{
 Super::Tick( DeltaTime );
}
//嗄老蝕兵扮瓜距喘參鰯協譜姥補秘孔嬬
void AAvatar::SetupPlayerInputComponent(class UInputComponent* InputComponent)
{
 check(InputComponent); //殊臥腎峺寞
 InputComponent->BindAxis("Forward", this, &AAvatar::MoveForward);
 InputComponent->BindAxis("Back", this, &AAvatar::MoveForward);
 InputComponent->BindAxis("Left", this, &AAvatar::MoveRight);
 InputComponent->BindAxis("Right", this, &AAvatar::MoveRight);
 InputComponent->BindAxis("Yaw", this, &AAvatar::Yaw);
 InputComponent->BindAxis("Pitch", this, &AAvatar::Pitch);
}
void AAvatar::MoveForward(float amount)
{
 // Controller陣崙匂輝念啜嗤乎actor。箭泌泌惚輝念叔弼棒阻?actor音贋壓阻?緩扮Controller陣崙匂短嗤啜嗤販採匯倖actor?椎担泌惚厘断珊?肇陣崙万?祥氏竃危。
 // 泌惚陣崙匂短嗤啜嗤actor賜宀卞強楚頁0?音嬬序秘乎痕方。
 if (Controller && amount)
 {
 // GetActorForwardVector()函誼叔弼?念議?楚
 FVector fwd = GetActorForwardVector();
 // 厘断距喘AddMovementInput栖壓‘fwd’?楚議圭?貧卞強叔弼‘amount’倖汽了
 AddMovementInput(fwd, amount);
 }
}
void AAvatar::MoveBack(float amount)
{
 if (Controller && amount)
 {
 // GetActorForwardVector()函誼叔弼?念議?楚?紗貧減催?乎?楚祥?朔?侭參函誼阻叔弼?朔議?楚
 FVector back = -GetActorForwardVector();
 AddMovementInput(back, amount);
 }
}
// 朔中議痕方窃貌念中?載否叟峡
void AAvatar::MoveLeft(float amount)
{
 if (Controller && amount)
 {
 FVector left = -GetActorRightVector();
 AddMovementInput(left, amount);
 }
}
void AAvatar::MoveRight(float amount)
{
 if (Controller && amount)
 {
 FVector right = GetActorRightVector();
 AddMovementInput(right, amount);
 }
}
void AAvatar::Yaw(float amount)
{
 // AddControllerYawInput()痕方喘噐個延陣崙匂議Yaw延楚?軸奐紗忿?已傴廬楚。
 // GetWorld()痕方函誼弊順峺寞UWorld*?宥狛弊順峺寞距喘GetDeltaSeconds()函誼耽屐債継議扮寂。
 // 岻侭參勣核參耽屐債継議扮寂?頁葎阻聞誼耽匯‐昼/脅奐紗200.0f * amount議個延楚。
 // 泌惚音核參耽屐債継議扮寂?椎担耽匯‐屐/脅氏奐紗200.0f * amount議個延楚。?廣吭喇噐耽昼籌半楚音揖?侭參耽昼議屐方音匯協頁耕協議。?
 // 宥狛屐方栖陣崙延楚?椎担嗄老心軟栖祥音椎担送芥。編??字徨來嬬挫議扮昨嗄老叔弼強恬祥儻堀?字徨來嬬餓議扮昨嗄老叔弼強恬祥蛸?宸斤噐螺社巷峠宅?
 AddControllerYawInput(200.f * amount * GetWorld()->GetDeltaSeconds());
}
// 和中議痕方嚥貧中跡揖?音壅弩峰
void AAvatar::Pitch(float amount)
{
 AddControllerPitchInput(200.f * amount * GetWorld()->GetDeltaSeconds());
}

鋲朔垢恬

1. 評茅謹噫叔弼
厘断窟孖緩扮魁尚嶄嗤岻念葎阻幣箭婢幣竃栖議謹噫議匯倖叔弼?厘断僉嶄乎叔弼?梓Delete囚繍凪壓魁尚嶄評茅。

2. 評茅謹噫当弉悶
1) 泌和夕侭幣嬉蝕BP_Avatar清夕窃園辞匂
2) 咀葎厘断厮将嗤什漬当弉悶阻?侭參音俶勣圻栖庁侏議当弉悶。壓園辞匂順中嶄序佩泌和荷恬?繍当弉圓譜峙個葎“NoCollision”軸辛。
将狛云准議僥楼?孖壓厘断議叔弼厮将辛參宥狛囚徒念朔恣嘔卞強才宥狛報炎恣嘔卞強栖汎yaw已傴廬附悶阻?遇報炎貧和卞強頁音嬬汎pitch已傴廬附悶議?宸心軟栖匆音徭隼??厘断朔中嗤凪万喘余。
<貧匯准 和匯准>

AltStyle によって変換されたページ (->オリジナル) /