【UE4】mouse event

参照

https://docs.unrealengine.com/latest/JPN/Resources/ContentExamples/MouseInterface/LevelBlueprint/index.html

 

BP作成

・MousePlayerController

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-30-17-25-20

 

・MouseGameMode

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-30-17-26-00

 

レベルブループリント

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-30-17-08-29

 

BP_Ball

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-30-17-18-20

 

 

 

Material作成

・新規作成>マテリアル

・ベースカラーにConstant4Vector接続

・ラフネスにConstant接続

 

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-30-18-09-05

・Constant4Vectorを右クリックし「パラメーターへupgarade」する。

Parameter Name(baseColor)をつける。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-30-18-17-54

 

クリックした時にマテリアルを変更する。

 

・変数作成dynamicMaterialを作成

・BP_Ball コンストラクションスクリプトで、マテリアルインスタンスの生成し、変数にセット。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-30-17-40-23

 

・BP_Ball をクリックした時にマテリアルのbaseColorパラメーターを変更する。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-30-18-42-56

 

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-30-18-43-48

 

 

Drag & Drop

マウスは2Dで3Dモデルなので変換が必要。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-30-22-48-49

 

 

スクリーン座標をワールド座標に変換

PlayerControllerのConvertScreenLocationToWorldSpace

%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3

 

 

【iOS】文字の色変え(部分的に)

      //行間

        let textStyle = NSMutableParagraphStyle()

        textStyle.lineSpacing = LINE_H

        textStyle.paragraphSpacing = LINE_H // 改行時の行間スペース

       

        // FONT

        let _font_en:UIFont = UIFont(name:“HelveticaNeue-Light”, size:18)!;

        // set all style attributes

        let attributes_en: Dictionary = [NSParagraphStyleAttributeName: textStyle, NSFontAttributeName: _font_en]

        let attrText = NSMutableAttributedString(string: tx)

        attrText.addAttribute(NSForegroundColorAttributeName, value: UIColor.red, range: NSMakeRange(red_from,red_len))

        attrText.addAttribute(NSParagraphStyleAttributeName, value:textStyle, range:NSMakeRange(0, tx.characters.count))

        

        txAnswer.attributedText = attrText

        txAnswer.font=_font_en;

【UE4】パーティクル

・パーティクル作成

・ダブルクリックで開く

・Required

Material  -> M_radial_ramp

Screen Alignment -> PSA_Velocity  カメラ向きに合わせて大きさが変化する

Emitter Loop  ->1

 

・Spawn

Rate Distribution -> Constant 0.0

Burst List +

Count 30

Count Low 20

 

・Lifetime

Min 0.3

Max 0.7

 

・Initial Size

Start Size

Distribution  -> Distribution Vector Constant

Distribution  -> Constant  X:4.0 Y:30.0 Z: 0.0

 

・Initial Velocity

削除

 

・Sphere

右クリックで追加

Surface Only ✓

Velocity ✓

Velocity Scale

Distribution -> Distribution Float Constant

Constant  30.0

 

・Color Over Life

Color Over Life

Distribution -> Distribution Constant Curve

Point 0 > InVal   開始時間

Out val 開始color

Point 1 > InVal   終了時間

Out val 終了color

 

Alpha Over Life

Distribution -> Distribution Constant Curve

Constant Curve

Point 0 > InVal   開始時間

Out val 開始alpha 1.0不透明

Point 1 > InVal   終了時間

Out val 終了alpha 0.0透明

 

 

 

【UE4】TimeOver

TimeOver

 

・IVGameState

timer (float)

OnTimeOver EventDispather

timeover

 

・OnTimeOverイベント受け取り

IVPlayerにバインド。DisableInputで動かないようにする。

bindtimeover

 

・OnTimerOverの受け取り(Enemy)

bindtimeoverenemy

SetActorTickEnabledでTickを止め動きを止める。

 

・GameOver画面作成(UI_gameover)

ユーザーインターフェース>ウィジェットプループリント

 

・stage1レベルブループリントにゲームオーバー画面追加

 カスタムイベントの作成

create widgetで、UI_gameover設定し、addToView

bindlevelbp

 

 

【UE4】UI (Widget)

 

・IVGameStateにscore変数を作成

・ユーザーインターフェース > ウィジェットブループリントから

UI_stage1を作成

bindscore_ui

 

変数をバインドする

bindscore

 

stage1のレベルBPに下記追加

・createwidgetで検索しウィジェットを作成。

classにUI_stage1を設定

addtoviewport

 

上にスコアを表示。

scoreui

 

button

・BP Widget作成

・buttonを配置し、イメージを設定

%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a33

 

・onclickイベント追加

%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a32

 

・event dispatcher 呼び出し%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a34

 

・Level BPで、event dispatcher bind。

%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3

 

 

【UE4】bullet

・create new BP Class form “Actor”.

 

add component

Sphere 0.2 x 0.2 x 0.2

・colliion > collision preset   OverlapAllDynamic

projectile movement

    ・Initial speed   1000

    ・prokectile gravity speed    0

bullet-damage

 

Player spawn bullet ( Spawn Actor)spawn_bullet

 

Enemy BP applied damage.

・life (default value = 3)

bullet_damage_enemy

 

 

 

 

 

【UE4】Timeline

  • rotate enemy timeline

create “BP_Enemy” Actor based BP Class.

 

timeline

rotate_enemy timeline

・3sec  0 to 360

・loop

・Linear curve

timeline_rotate

 

Lerpを使った場合(Reverse時に便利)

・timeline changes value 0.0 to 1.0 ,then lerp value change A to B.

・Lerp(Rotate)

・Lerp(Vector)

・Lerp(float)

timeline_lerp

 

timeline_lerp_graph

 

check timeline forward or reverse.

ETimelineDirection

timeline_switch

 

 

※注意点

・関数内ではTimelineは使えない。

・初期値(例えば0-50)から始めたいときは、Play from Startにつなぐこと。

 

 

 

【UE4】Preparation

空のプロジェクト作成

・light>directional light

・geometory > box  0,0,0位置に1000,1000,0

・基本>player start  0,0, 150に配置

 

・Player作成

ブループリント > Character > BP_IVPlayer

capsul component -Shapeにサイズ設定(50×50)

add component > Cube

 

・PlayerController作成

IV_PlayerController

 

・GameState作成

IV_GameState  点数、時間などのゲーム共通変数を持たせる

 

・Game Mode作成

詳細で下記設定

Default Player Pawn   IV_Player

Player controller   IV_PlayerController

GameState    IV_GameState

 

・GameInstance作成

IV_GameInstance

 

・プロジェクト設定> map&mode でGamemode,GameInstanceを設定

setting

 

・IV_Player

add component

1.Spring Arm

Target Length 500

2.Camera

drag&drop SpringArm, to become child.

change rotation of Spring Arm (with Camera)

springarm

 

 

playerの真上にカメラを設置して、カメラを傾ける例。

自分が写らないようにしたいときに役に立つ。

%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3

 

 

  ・Move player by Input

project setting > input

Axis Mapping  + Add “MoveL” “MoveR”  and set to keybord key  “->”  “<-”

input_axis

 

add Event to IV_PlayerController BP.

input_event

 

 

 

 

 

 

【UE4】OSC

http://qiita.com/gansaibow/items/bb8cb4f9cd24db02531f

・プロジェクト作成

新規プロジェクト

C++

 

・download from git

・(your project)/Pluginsを作成し、OSCフォルダをコピー

・IPとポートを変更

OscSetting.cpp

UOscSettings::UOscSettings()
:  ReceiveFrom(“50000”),
_sendSocket(FUdpSocketBuilder(TEXT(“OscSender”)).Build())
{
SendTargets.Add(TEXT(“192.168.100.102:50000”));
}

 

・プロジェクト(.uproject)起動するとRebuildするメッセージが出てくる。yes

出てこないときは、

設定>plugin でOSCをenabled

するとrebuildメッセージが出てくる。

 

・Blueprintを作成。

コンポーネントの追加で、OSC Receiver

イベントOnOscReceiverを追加

%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3

 

 

送信

SendOSC

%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3

 

 

 

【UE4】Save & Load

保存とロード

 

下記のブループリントを作る

・保存するデータ構造体 myData

変数+  float value, string name

・保存のためのクラス SaveGame > mySaveGame

変数+ myDataの配列とか

 

・外部BPと共有するためのゲームインスタンス GameInstance > myGameInstance

変数+ myData(アプリ内で利用するため)

関数 saveData, loadData

 

・プロジェクト設定

map&mode > Game Instance > GameInstance にmyGameInstanceを設定

%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e8%a8%ad%e5%ae%9a

 

 

loadData()

load

 

saveData()

save

 

Level BluePrint

level