2017年10月18日水曜日

キーイベントが効かない原因の一つ set input mode UI Only

BPでロジックを組んでいる最中キーイベントが全く効かなくなる現象が起きました。

例えばキーボードイベントの「X」や「1」を作ってPlay時にそれらのキーを押してもイベントが発生しないということです。

それで原因がわかったのですがタイトルの通り「set input mode UI Only」が原因でした。

このノードが繋がってるとゲーム中のインプットが機能しないようです。

このノードを使った理由がちょうどキャラ選択部分のレベルを作っていてPawnカメラを操作できないように「set input mode UI Only」を使ったわけですが他に影響が及ぶことを全く想定できていませんでした。

結局「set input Mode Game And  UI」に置き換えたらうまくいきました。



その他自分へのメモ:
イベントディスパッチャーは作成する側でcall, message
飛ばす側(発動する側)にEvent

2017年8月27日日曜日

Hide cursor during capture / クリック時にマウスカーソルを消す

タイトルの通りクリックしている間マウスカーソルを消したい場合

"Set Input Mode Game And UI"ノードの"Hide cursor during capture"にチェックを入れる。


クリックしている間カメラを動かしたい、またはクリックしている間マウスを左右に動かして数値を動かしたいとなった場合マウスカーソルが見えていると移動量が限定されるのでそういう場合にこの機能を使ったりする。

ただしここでのクリックはLeft、Middle、Rightすべてに適用されてどれか限定することはできない。



2017年3月29日水曜日

Camera Zoom 【Blueprint】

UE4再開しました。

以前作成したCamera zoomの方法はCamera自体を移動させる方法だったのですがそれだと2次元以上(x,z)を同時に動かそうとすると複雑になるのでCameraとの距離を決めているTarget Armの値を動かすほうがシンプルで簡単じゃないかと思い新たに作成しました。


変数のCameraZoomSpeedを作成(値100)
ポイントは理想とするカメラの可動範囲を100~500とすると、TargetArmLenghtの値とCameraZoomSpeedを足した値が100~500にならないといけないのでClampの値は
200~400になっています(ここに気づくのがちょっと大変だった。。)

2016年8月18日木曜日

RTS Camera Part1

RTSチュートリアルの覚書
参照動画の大体1時間位までの内容です。

Unreal Engine 4 RTS Series Part 1 The Camera

https://www.youtube.com/watch?v=uhbMEBMTJKU&list=PLA3VyVTnpwF7xHqJTHx7cUU8GhE5Wtrxk&index=1

MasterCommander BP
Class::Pawn
Pawn系のBPの親となるBP?

Unit
Environment
Logics
のカテゴリにBPを分ける

UnitにはHumanとAlianのBP(おそらく人間とエイリアンの対決を想定してるから)
HumanCommander BP
AlienCommander BP
Class:Pawn (Pawnは駒を意味する)
親PawnはMasterCommander BP

Environmentには現状Target BPのみ
SpawnTarget BP
Class:TargetPoint
SpawnポイントのターゲットとなるBP

Logicにはゲームの核となる基本のBPが格納
MyGameInstance
Class:GameInstance

MyGameMode
Class:GameMode

MyGameState
Class:GameState

MyHud
Class:HUD

MyPlayerController
Class:PlayerController

MyPlayerState
Class:PayerState

RTSInterface
Class:Interface

MasterCommander BPにWASDムーブメントのを記述

前に別の人がやってたチュートリアルよりわかりやすかった。


Project Setting>InputでAxis Mappingを設定。反対の移動はマイナスで設定するんだ。

マップが狭いのでカメラがマップ外に出ないようにマップ境界ののコリジョンを設定。



AlienとHumanは見分けがつくようStatic Meshに別々の仮のマテリアルをSet

MyGameInstance
GameInstanceはレベル間を超えて使用できる変数を作れる。
SetDefaultPawnの作成。FanctionName変数によってHumanかAlienか決める。


ゲーム開始と同時にPlayerがSpawnsしてコントロールできるようにする。




Level BPにPawn対象とSpawnする場所を記述し
PlayerControllerにSpawnするキャラクターをセットするためのカスタムイベントをつくってそれをGameMode BPに渡し
GameMode BPにSpawnしたActorを所有する内容を書く
PlayerControllerにSetPlayerToSpawnのカスタムイベントを作ったのはReplicate Run on Serverのため?




Mouse Event 覚書

マウスカーソルを、あるアクター(SM_Couch)に重ねるとマウスカーソルのアイコンが変化するブループリント


ホーバーさせたとき以下のようにカーソルが変化




アクターとPlayerCharactarとの距離によって対象アクターをクリックした際DestroyさせるBP
GetDistanceToノードを使ってTarget(ここではSM_Couch)とCharactarとの距離(Float)を計算し、CompareFloatノードを用いて比較数値の大小でアウトプットを判断する。


参照動画
https://www.youtube.com/watch?v=LxFOf9xGLj8&index=1&list=PLuccqGLrvoh2FKHl3jlnCxuA76ysoSm1P

2016年8月17日水曜日

エラーが解決できない。。

RTSの難しいチュートリアルをきちんと理解しないまま進めていたら、あるとき一つのエラーで全く前に進めなくなった。。

これはちゃんと理解してから進めてゆけという天からのお言葉ですな。。

ということでまた1からやり直しです。

2016年7月27日水曜日

Edge Screen Movemet - BluePrint

ぜひ覚えたかったことの一つなのでメモ

RTSでよく見られるマウスをviewer端まで持っていくとその方向にカメラが自動的に移動してくれるブループリント
例:マウスポインタがビューワー上端に到達するとカメラが上に移動する。

参照動画

Unreal Engine 4: RTS :: Episode 4 - Camera Movements Part 3


参照BP

ビューワーのサイズとマウスのポジションを取得し、それらの値を用いて画面端のエリアまでマウスが来たらどのような動きをするか判断させる。

例えば

一般的なHDディスプレイを想定して横1920、縦1080からの上の図のようなそれぞれの縦横の数値前後10%、90%の部分を塗りつぶしたエリア(黄色のエリア)にマウスが到達すると画面移動するBPを作成する。
※実際のチュートリアル動画では数値が全幅1に対して0.975と0.25の設定なので本当に端ぎりぎりまでマウスを持ってこないと移動しないようになっている。

UE4のビューワー内のポイントの数値の設定がどうなっているかわからないのですが、例えば左下が(0,1920)で右上が(1920,1080)とかのこと。ソフトによってはセンターが(0,0)のものもある。
多分前者の方だと仮定して(間違っていたらご指摘ください)、適当なポイントを取得します。

マウスポインタが(500,500)の位置にあったとすると、予想できる通り白の範囲でこの場所だと画面移動はしないようにします。
参照BPを見てもらうとして計算すると

X
500/1920 = 0.260
これは設定した0.975より小さく0.025よりも大きいのでグラフをたどっていくとEdgeMouseSpeedXのset 0のnodeに辿り着きます。つまりは動かない。
Yも同様に
500/1080 = 0.462
でたどり着くのはEdgeMouseSpeedYのset 0のnode。

ではマウスポインタが(1920,500)の位置にあった場合はどうか
X
1920/1920 =1
BranchをたどっていくとEdgeMouseSpeedXのset5のnode
Y
500/1080 = 0.462
で先ほどと同じEdgeMouseSpeedY set0になる。
すなわちこの場合は右方向の移動が加わるということ

ほかも上下左にポインターがあった場合も同じ感じになるはずです。


キーイベントが効かない原因の一つ set input mode UI Only

BPでロジックを組んでいる最中キーイベントが全く効かなくなる現象が起きました。 例えばキーボードイベントの「X」や「1」を作ってPlay時にそれらのキーを押してもイベントが発生しないということです。 それで原因がわかったのですがタイトルの通り「set input mode...