使われる処理をUnrealC++で書いてみようの巻。スマートフォン用の表示で見るたこわさびが好き。この広告は、90日以上更新していないブログに表示しています。2016-12-22よく使われる処理をUnrealC++で書いてみようの巻。Tweetこんにちくわ。初めましての方が多そうなので自己紹介をさせていただきます。(18歳です...)一応高校生やらせてもらってます。UE4に触れ始めたのは去年の今頃だった記憶が...Twitterやってます。2015を使用しています。2015のダウンロードはこちらから。www.visualstudio.com今回のテーマはブログの題の通りです。言っていても仕方がないので本題に入りましょう。BeginOverlap,EndOverlapこちらはBPでもおなじみCollisionの衝突判定のイベントです。:これを使わずしてゲームは作れないって程重要なノードです。こいつを実装してみましょうか。自分は今こんな状況にいる!ってシチュエーションを作りましょう。今回は、ドアの開閉スクリプトをBPじゃなくUnrealC++で作りたくて夜も朝までしか寝れない!ってシチュエーションにしましょう。DoorClassを作る。ActorClassを継承したDoorClassを作りましょう。基本となる、StaticMeshをアサインする処理から。DoorTrigger;ひとつずつ解説していきます。:UPROPERTYを簡単に説明すると、エンジン内に存在するUPROPERTYマクロを使用した変数の宣言です。こいつを使うことによってBPClassとの連携が取れます。:specifier(指定子)はUPROPERTYマクロを宣言する際に記述することによって、宣言子に指定子を追加しさまざまな振る舞いを持たせることができるものです。公式ドキュメントにくわーーーしく載っています。:metaを一言で説明すると、パラメータの編集を制御できるようにするためのもの。DoorFrameMesh;DoorMesh->SetupAttachment(DoorFrameMesh);DoorTrigger->SetupAttachment(DoorMesh);}Componentを追加はCreateDefaultSubobject,Attachに関してはSetupAttachmentです。OtherBodyIndex);なお、関数の引数ですがこれからのバージョンアップで増えたり減ったりすると思うので、あくまで動作を保証するバージョンは4.14.0ということにさせてください。UFUNCTIONマクロですが、BPClassと連携が取れる(関数Ver)とでも思っておいてください。&ADoor::OnDoorTriggerEndOverlap);AddDynamicヘルパーマクロというものを用いることで、自動的に関数名の文字列を生成してくれるそうです。これによってOverlapEventのBindingは完了です。好きな処理を書いてください。好きな処理を書いてください。好きな処理を書いてください。好きな処理を書いてください。OtherBodyIndex);Door.hのBegin,EndOverlap関数のUFUNCTIONにBlueprintImplementableEventを追加し、Door.cppの関数の定義を消せばOKです。自分だけのイベントを作っちゃいましょう('ω')これでOverlapEventに関しては終わり!お次はAnimBPをC++から制御する処理についてです。:マウスの右クリックでADS(銃のサイトを覗き、安定させること)のAnimationをさせる。AnimBPを作成する。ここでひとつ注意です。継承したAnimBPClassを作成してください。名前はなんでもOkです。AnimInstanceClassを継承したC++Classを作るわかりやすい名前で作成の後、コードを書いていきましょう。いう名前で作成しました。ここに変数の初期値を設定します。ここに変数の初期値を設定します。上にごちゃごちゃ書いてあると思いますが気にせず。PlayerInputComponentを設定BPからバインドされたインプットイベントを呼ぶにはノード一つで対応できますがC++だと少しだけ手間が必要になります。ThirdPersonCharacterのソースファイルにコードを書きます。&AThirdPersonCharacter::StopAim);PlayerInputComponentのBindAction,BindAxis関数(今回使っていませんが皆さんのCharacterClassにあると思うので説明させていただきます。引数はこのようになっています。Settings->Inputに設定したイベントネームのことです。"ADS"という名前のインプットアクションです。列挙型でKeyEventが6つ定義されています。キーが押されている限り実行(ですが、他のキーの割り込みが入ると中断されるそうです。すみません、不明です...。:現在、使用しているCharacterClassを参照してあげてください。:キーを押したとき,離した時に呼ぶイベントを参照してください。今回はAim,StopAim関数を呼んでいます。false;}ここまできたらAnimBPに飛びましょう。変更が完了したらBPをコンパイルして下さい。動作してるかテストしてみましょうか。画面にtrueと表示されていればOKです。実際にプレイヤーにAnimationさせる・まずはStateMachineを用意します。StateMachineの説明は本題からそれてしまうので、docs.unrealengine.comこちらをご覧ください('ω')・StateEditorに飛んだら新しいStateを用意しましょう。いう名前のStateを作ります。・お次はAimingStateを追加します。"idle"ちなみにUPROPERTYのCategoryはこんな感じで活躍できます。(便利!)・Test!!Characterがこんな感じでAnimationしていればOKです('ω')Animation編・・・END!![LINETRACE]おなじみのLineTraceです。銃の発射処理やikなどにも使われているこの処理をUnrealC++でやってみましょう。いう名前のClassを作りました。false)・FORCEINLINEマクロコードを強制的にインライン化するものです。(inlineの強いVerかな...?)inlineについてはこちらを参照。NULL);}・FCollisionQueryParamsCollisionの衝突判定に関する情報がいろいろと入っています。今回の処理で言えばbTraceComplex(trueなら元のmeshのCollisionから衝突判定を取り、falseならmeshに割り当てられているcollisionから衝突判定を取る),bReturnPhysicalMaterial(PhysicalMatを返すか否か),IgnoreActor(Traceを無視するActorを指定できる)などです。便利...・FHitResultおなじみのヒットリザルトです。※ThirdPersonCharacterを使っていると仮定してのコードです。LineTrace();}他にいろいろ書かれていると思いますが気にしなくて大丈夫です。一度UE4のEditorに戻りInputActionを設定しましょう。いう名前のActionをマウスの左ボタンに割り当てました。OnTraceHit(HitPoint,HItActor);}こんなことが可能に....素晴らしい。以上で本ブログは終了になります。張り切ってかなり長く、見にくくなってしまい申し訳ありません...。間違っている箇所がありましたら修正依頼をお願いします早急に直します。」が癒してくれることを願って終わりとさせていただきます。23:53よく使われる処理をUnrealC++で書いてみようの巻。戦争よく使われる処理をUnrealC++で書いてみようの巻。月別アーカイブはてなブログをはじめよう!ikagamedevさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?はてなブログをはじめる(無料)はてなブログとはたこわさびが好き。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。