僕の私のUnrealな日々

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

自分用記事一覧

物忘れが激しい自分が見やすいように作った記事一覧です。

宣伝です。

第4回ぷちコンで3位をいただきました。

[UE4] 第4回UE4ぷちコン、最優秀賞作品発表! | historia Inc - 株式会社ヒストリア

 

受賞したゲームの実行ファイルです!

unrealbussan.hatenablog.com

 

是非遊んでみてください!

 

2015年に作ったギミックたち - 僕の私のUnrealな日々

 

 

チュートリアル的な奴

UE4:Eventノードを使った簡単なBluePrintの作り方

色々あって悲しくなった記事です。

 

実装編

Widget

 ・タイトル画面でのボタンの設置について

ポーズ画面の作り方

 

VR系

Oculusを使ってMMDに壁ドンしてもらう方法

簡単なOculus(VR)用のメインメニューの作り方

UE4+VR:画面の中心とオブジェクト(アクター)が重なった時にイベントを発生させるブループリントについて 

 

Player側の実装系

一人称と三人称の切り替えのBluePrintの作り方 (New:画像を入れ替えたためノードが少し見やすくなりました。)

カメラを動かした一人称と三人称の切り替えの実装について 

アサルトライフルのブループリントの実装について 

アクターへのターゲットのロックオンのブループリントの実装について 

リロードなどのステートマシンを使用しないアニメーションの実装について 

プレイヤーのKey入力を取得するActorの簡易的な実装

 

スローモーションの実装について

走ってくるゴブリンに物理シミュレートを使って転ばせる方法

 

サウンド系

サウンドの音量とピッチをBluePrintで上げ下げする

 

ギミック系

Gateを使った手動扉の実装について

アクターをマウスを使って回転させる 

ジップラインのブループリントの実装について 

ターザン(ぽい)ギミックを実装する。

 

被破壊メッシュ系

被破壊メッシュを使用してアサルトライフルで壁を壊す。

 

その他

レベルブループリントを用いないカメラの切り替えについて

キャラクターを変えた簡単なローカルマルチの実装について

構造体 実装メモ

メモ:NavMeshを動的にする 

コナミコマンドなどのコマンド入力の実装

:BoxCollisionのスケールをLineTraceでHitしたLocationまで伸ばすBPについて

 

マテリアル系

アクターのフェードアウトの実装について 

ギャグアニメによく使われるフェードアウトの作成 

オブジェクトのアウトラインをM_Highlightを使って光らせる。

 

配布物

:電子ロック 配布あり

TheForestっぽいクラフトのギミックのマクロの配布と使い方

 

BluePrint研究(気になったノードを調べる奴)

Random Point in Bounding Box メモ 

マテリアル研究

水に覆われてる球体について

マテリアル:Rotatorを使用してテクスチャを回転させる時に四隅に出てくる部分を消す 

その他

UE4:アセット購入時に使用できないネット専用クレカについて 々

進捗報告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°単位で取得出来ます。