僕の私のUnrealな日々

UE4のBluePrintを使って小さなギミックを作ったりしてます。ブログを通じて情報共有ができたらなと思います。

進捗報告2

 

 

お疲れ様です。

 

 

今月の進捗を書こうと思います。

 

 

 

 

 

 

 

一応進めてます。

 

一応アニメーション同期周りやダメージ周りの検証を一通り終えたので少しづつ実装を行っています。最近メンタルが崩壊しかけたのでジムに通っているため進みが遅いです。あともう少し仕様を固めないと後々困りそうですね。

 

何か知見が出来たらまた記事にしようと思います。(ただネットワーク周りの説明がしんどいので思っているだけですが。)

 

 

てことで来月も頑張ります。

 

 

※協力してくれる暇人の方募集中です。

アイディア出しのブレインストーミングを一緒にしてくれる方など。

 

以上

 

 

 

 

 

進捗報告1

 

f:id:Bussan_dayo:20170916160224p:plain

 

 

始めて一ヶ月が経ちました。

 

 

 仮名をChaosOfWar。プロジェクトコードネームとして牛(Cow)と読んでいます。とっても変えたい。動画などでちょくちょくChaosのスペルミスがありますが、気にしないでください。学がないだけです。

 

進捗報告

 行ったこととしてまずルームの作成、クライアントの参加の処理テストです。

 

 

 

 

最低限のテストが出来ましたので、身体の色などを変更した場合にどういった処理を組むことにより同期が行われてるかのテストとなります。このことについては記事にまとめました。

 

unrealbussan.hatenablog.com

 

次に行ったのはPlayerの操作権限を他のキャラクター、及びPawnに移した場合の検証となります。テスト方法としましてはバイクを用意し二人乗りの実装を行いました。

 

 

 

 

 

 

 最後に、キャラクターの衣類の変更などが出来るような処理を作成しました。これはネットワークではなくルームの作成参加を行う前出来る機能となります。

 

 

 

CharacterCreate2から持ってきたモデルをMayaLTで髪、上半身、下半身、靴に分けキャラクターBPのコンポーネントに4つのスケルタルメッシュを設置し、そこにぶっこんでいく処理方法です。ネットワークの処理の組み方がめんどくさすぎてシングルプレイは楽に感じたのですが、素材のインポートがめんどくさすぎて辛い思いをしました。(服のスクショやらそれぞれの身体のパーツを持ってきたり・・・)

 

 

来月はアイテムや武器の取得及びそれに伴うアニメーションの検証を行います。

UI周りは作らないので素材インポートという面倒くさい作業もないためスピードは上がる気がします。

 

ご期待下さい。

 

以上

 

 

 

サーバーとクライアント側のネットワークの同期~キャラの色の変更編~

 

f:id:Bussan_dayo:20170820015449p:plain

 

 

 

 やってます。

 

で、ネットワークの同期(PRC)がちょっとややこしいので得た知見をここに書きます。後々間違いに気づいて訂正するかも知れません。とりあえず出来たって感じで。

 

 

機能については詳しくかかないのでこれを見てください。

docs.unrealengine.com

 

 

てことで色を変えます。

 

使用するもの

ThirdPersonキャラ

 

仕様

1を押すとServerだと赤、クライアントだと青に変更

 

 

エディター

プレイヤー数を1以上にするとネットワークのテストが出来ます。

f:id:Bussan_dayo:20170820014323p:plain

 

 

サーバーとクライアントの色を変えます。

f:id:Bussan_dayo:20170820014801p:plain

続きを読む

マテリアル探求1

 

久々にいじって遊んでました。

 

f:id:Bussan_dayo:20170712000542p:plain

 

 

f:id:Bussan_dayo:20170712000517p:plain

 

UE4のテクスチャーはエンジン内に入っているものなのでコンテンツブラウザの表示オプションからエンジンコンテンツを表示、UE4_Logoで検索すると出てきます。

 

かなり久々に触ったのですが少しづつ色々と思い出してきました。これからちょくちょく触っていきます。

 

また何かできたら報告します。次はこんな単純なものではなくいい感じのやつを・・・。

 

ウンオッケー(b*ゝvƠ)=☆

 

以上。 

UE4:[C++]ActionMappingの取得

アクションマッピングで設定したキーをC++で呼び出します。
色々と調べながらなのでアレかもしれません。動きはしました。
BPに慣れすぎるとコンパイル時間が長く感じますね。効率が悪い。


input.h

private:
	UInputComponent* InputComponent = nullptr;
	
	void InputEvent();
input.cpp


void UInput::BeginPlay()
{
	Super::BeginPlay();

	//入力を取得
	InputComponent = GetOwner()->FindComponentByClass<UInputComponent>();


       //取得できた場合の処理
	if(InputComponent){
		InputComponent->BindAction("InputMappings", IE_Pressed, this, &UInput::InputEvent);
	}
	// ...
	
}

void UInput::InputEvent()
{
	UE_LOG(LogTemp, Warning, TEXT("入力ゲット!"))
}


このブログはBPのみとしたいので近々他のブログに移すと思います。

UE4:C++にてLineTraceにてオブジェクトの取得

LineTraceでオブジェクトの名前をLogに出すメモです。
ActorComponentでC++を作成しPawnのコンポーネントに追加しています。自分の環境では動きました。
自分用メモなので参考にしないでください。いずれどこかに移します。

LineTrace.h
private:
 float DirectLength= 1000.f;

LineTrace.cpp

#define OUT
void ULineTrace::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
 Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
 FVector PlayerViewLocation;
 FRotator PlayerViewRotation;
 GetWorld()->GetFirstPlayerController()->GetPlayerViewPoint(OUT PlayerViewLocation, OUT PlayerViewRotation);

 FVector TraceEnd = PlayerViewLocation + PlayerViewRotation.Vector()*DirectLength;
 FHitResult Hit;
 GetWorld()->LineTraceSingleByObjectType(OUT Hit, PlayerViewLocation, TraceEnd, FCollisionObjectQueryParams(ECollisionChannel::ECC_WorldStatic));
 
 AActor* HitActor = Hit.GetActor();
 if (HitActor) {
 UE_LOG(LogTemp, Warning, TEXT("LineTraceHit:%s"), *(HitActor->GetName()))
 }
 // ...

UE4:気になったノード達(不定期更新)

気になったノードのメモです。

不定期更新になります。このページに追記していく予定です。

 

GetActorEyesViewPoint

f:id:Bussan_dayo:20170523015558p:plain

 

アクターの座標と回転を取得出来ます。

f:id:Bussan_dayo:20170523015729p:plain

回転は360°単位で取得出来ます。