BlendTreeを使ってみました! 初見ではなかなか理解できなかっ… 2018-12-05 キャラクターの動かし方を見直してみた #15 #2020/8/16に更 … ・ Unityのコルーチンとは?使い方をまとめました void FixedUpdate () Discussion in 'Assets and Asset Store' started by DevionGames, Feb 5, 2013.         currentBaseState = anim.GetCurrentAnimatorStateInfo(0);         orgColHight = col.height; 現時点では、正面を向けて配置した場所から移動することはなく、足踏みしているアニメーションだけ設定している状態です。 Over 11,000 5 star assets. Find this & other Creatures options on the Unity Asset Store. 画面全体にテロップを... 今回は、Unityで2D向けのRPGを制作する際の会話イベントをFungusを使って作ります。     { ・ UnityでのUIデザインの基礎をまとめてみました ・ (この記事)Unityで作られているRPGゲームを作るための6つのステップ A Unity ID allows you to buy and/or subscribe to Unity products and services, shop in the Asset Store and participate ・ Unityのアセットストアの上手な使い方 【Unity】RPGを作る際に使いたい便利な機能について . その後、ゲームを実行してみて気づいたのが、会話中のプレイヤーが動かせてしまう問題と、コマンド画面を開けてしまう問題です。また、コマンドを開いている状態で自由に動けるのも... 前回に引き続き、ScriptableObjectを使ったパラメータの変更例について紹介したいと思います。 ・ Unityのcloud buildの便利な点をまとめました 指定の方向にカメラを1画面分ずらすという処理をすれば完成です。, プログラミングだけでやるゲームの場合はそのままだとキャラクターが動かないので、         float h = Input.GetAxis("Horizontal"); Thanks, Tony! RPGでNPCをその場で動き回るようにする【... 前回は、Fungusを使ってDQ風の会話イベントを実装しました。 (その辺の説明はここのサイト様が丁寧かも。https://www.sejuku.net/blog/83742) 流石にRPGは、実装しなければならない機能が物凄く多くて、アクションゲーム等に比べると制作難易度がぐっと上がりますね。, まだまだ、完成には程遠いんですけど、UnityでRPGを作りたい人向けに個人的に役に立つなと思った機能についてまとめておこうと思います。, 現在私が作っているゲームの見た目は、こんな感じです。昔ながらのRPGって所ですね。, 2Dで制作を行っているので、全ての機能において2Dと3Dどちらでも有効に活用出来るとは限りませんが、参考にしてもらえればと思います。, TileMapとTilePaletteは、もはや2DRPGを制作する上で必須機能といっても過言ではありません。, 画像にあるように、基本的にマップチップを組み合わせる事で町や村、フィールドを作る事になります。Unityでは、パレットに登録しておいたマップチップをマウスでなぞることでマップを構築していきます。, スイスイと作れるので、見た目の部分だけならクオリティの高いものをあっという間に作り上げる事が出来ます。, また、衝突判定を行う、行わないといった設定もレイヤー1つで簡単に行えるので、初心者にとってはとても便利な機能になります。, ScriptableObjectは、大量の共有データを格納すると公式に書いている通り、RPGのようなさまざまなデータを管理する際に効果を発揮します。, 特徴としては、何かしらのゲームオブジェクトにアタッチして使用しない事ですね。アセットをイメージしてもらえれば良いと思います。, RPGでは、「プレイヤー」「仲間」「敵」「アイテム」など取り扱うデータの種類が多岐に及びます。敵一つ見ても、スライムからラスボスまで、敵の種類もたくさん用意する必要があります。, それぞれを1つ1つインスタンス化しているとその分使用するメモリの量も増えてしまいます。ScriptableObjectのみ参照することで、パラメータの使用メモリを削減するわけですね。, ScriptableObjectについては、公式ページに詳しく載っているので参考にしてください。, ほとんどのRPGでは、コマンド画面が用意されていますよね。プレイヤーの強さを確かめるステータス画面やアイテム一覧画面などが良い例です。, また、Canvas GroupコンポーネントにおけるInteractableは、UIが入力を受け付けるか判断する機能となっていて、コマンド画面の行き来を行う上で重要な役割を担っています。, interactableのオンオフを繰り返すことで、各種コマンドの選択を行うようにします。, 特にプログラミングに慣れていない初心者の方にオススメしたいアセットとなっており、登場するキャラクター達の会話あってこそのRPGですので、0から作るのが厳しい場合に是非取り入れるべきだと思います。, 操作感が気持ちよくなりますし、ゲームの盛り上がりには欠かせないので必要不可欠ですね。, 現在は、まだ製作途中なので、気になった機能や便利な機能については随時更新したいと思います。, やはり、見た目の部分に関してはそこまで難しくないんですけど、スクリプトの数が膨大になってきており、RPG作りの難しさを痛感している今日のこの頃といった感じですね。, Udemyと言えば、世界最大のオンライン学習プラットフォームで学べるコースの数だけ見ても既に10万コース以上あります。. Unity初心者の方でもわかりやすいように簡単な2Dアクションゲームの作り方を解説しています。今回は移動処理を作成していきます。移動はtransform.positionを使ってしまいがちですが、その方法を使う前にちょっと注意すべき事を解説しています。 隣のエリアにいくときは1画面分スクロールするという仕組みにしていきます。, Unityで作る場合は先ほども言った通り、カメラを固定した状態で上下左右のスクロールスイッチがONになったら Unityでゲームを作ってみたいけれど何から始めれば良いのかわからない、とりあえずRPGでも作ってみようかな、といった状況の人がいるかと思います。, そこでこのページでは、Unityをまったく触ったことのない人でもわかるよう順を追って手順を解説していきます。, Unityをまったく操作したことのない人だけでなく、ある程度経験のある人もざっと目を通すことで気づくことがあるかもしれません。前半は初歩的なことなので、知っている部分は飛ばして知らない部分のみ目を通していただければと思います。, すでにインストール済みの人はリンクを踏む必要はありません。まだUnityをインストールしていない人は、以下のリンクからインストールしてください。, https://unity3d.com/jp/get-unity/download/archive, バージョンについては特に作りたいシステムや見ているテキストなどがない場合、最新バージョンをインストールしておけば良いかと思います。何か参考書などを使ってゲームを作る場合は、そこで使用されているバージョンに合わせると良いでしょう。, バージョンが違うと微妙にコードやツールが異なる場合がありますが、大幅に違うわけではありません。バージョンの違いから完全に解説通りにいかない可能性もありますが、少し自分の環境に合わせるだけなので、バージョンの違いはそこまで気にする必要もありません。, Unityでも2Dの場合もありますが、今回は3Dゲームを作成していきます。そして、まずキャラクターの前にマップを作成します。キャラクターから先に作っても良いのですが、サイズ感等を考えるとマップから作ってキャラクターをそれに合わせていった方が合理的です。, Unityを起動したら新しいプロジェクトを作成し、Assetをロードします。UnityではAsset Storeというものでいろいろなツールをダウンロードできるのですが、このAsset Storeからダウンロードしたものを使用するための設定がAssetです。これでマップの大枠を作ります。, マップの大枠ができたら細部を作りこみます。RPGなら大地や草木などが必要になることが多いでしょう。この辺は自由ですが、基本的に自分で実装するのではなくAssetの機能で設定していきます。, これで大地の土台となる平面が登場しました。この上に草木の設定をしていくことでよりRPGらしいリアルなマップになっていくのですが、簡単に設定できることがわかったかと思います。, Unityなしでゼロから作るとなると大地も自分でコーディングしなければならないのですが、Unityを使えば簡単です。そして草木の追加の方法ですが、これもGUIからできます。ウィンドウから木のマークをクリックするだけで木のモデルが追加されます。, 同じ方法で草も追加できます。地形もスクリプトなしで変形させることが可能で、ペイント機能でドラッグするだけで直感的に変形させることができます。たとえば、地面を上に引っ張れば地面が隆起します。, マップがある程度できてきたら、次にキャラクターです。3DのキャラクターでもAssetの機能を使えばスクリプトなしで実現できます。3Dのキャラクターを作るのであれば、unity-chanというAssetがおすすめです。, 適当な名前ではありますが、高機能で無料です。Asset Storeでunity-chanと検索すればすぐに見つかります。Unity-chanにはもともとAnimatorコントローラ付いているため、そこから状態遷移の設定を行うことができます。. By Unity. Applications. Just as an FYI your 'tutorials' (as opposed to documentation) goes to an rpg kit 3.0 video, might be confusing. Import the Dialogue System for Unity 1.5.7a. ThirdPersonController: Animator setup with LayerMasks -> Avoid hands clipping, Attack when moving... ThirdPersonController: Fixed sliding on slopes.         anim.SetFloat("Speed", v); Import the package Dialogue System/Third Party Support/ICode Support. Tools .         rb.useGravity = true; velocity = transform.TransformDirection(velocity); transform.localPosition += velocity * Time.fixedDeltaTime; Fungusは、RPG等の会話イベントを簡単に作成できるアセットです。機能が豊富な上に、無料で使えるので初心者をサポートしてくれる超強力な... RPGをプレイすると最初にプロローグが流れることが多いです。 Open your project's Build Settings. このスクリプトを使いまわしたいから SceneName って関数を定義していつでも変更できるようにしとくといいかも。 Switching level does not force all client to switch the level. 階段があったりしてエリア移動で画面が暗転したりトランジションしたりしますよね。, ARPGも例外ではないのですが、ゼルダの伝説夢を見る島(GB版)はエリアごとに区切られていました。, スクロール処理というのはUnityではカメラを使えば簡単なのですが、 準備ができたら暗転解除と言った感じでしょうか。, Unityであればシーンを切り替えるときに暗転してないと、 There is no tools menu in Unity by default. ICode: Auto enable scripting define symbols for ICODE, use #if ICODE, LoginSystem: Moved window names to LoginSettings, Shared: Replaced UINotification with a more advanced MessageBox, Shared: Replaced UIMessage with MessageContainer that extends from UIContainer, Conversation: More advanced conversation example, RoomSystem: Message in chat when a new player connects/disconnects, RoomSystem: Moved Chat scripts to Unitycoding/Room System/Runtime/Chat, RoomSystem: Checks if all variables are assigned in the inspector. Imported RPG Kit Lite and PUN. Import the Dialogue System's ICode Support package that's included with 1.5.7a. One of the main use cases for ScriptableO... 前回RPGで使える便利な機能について紹介しましたが、ScriptableObjectについては具体的な使い方について掘り下げてみようと思います。 別にRPGに限らずとも使用する機会はいくらでもありますが、RPGはScriptableO... 今回は、2DRPGにおけるNPCに動き回る機能を実装したいと思います。 RPGのおしゃれなエンディングシーンの作り方【Unity】 Created a new project. RPG作成, そのシーンをFile>Building Setting 前回作ったシーンと一緒に投下, MapPlayerがTriggerに触れたときにSceneの切り替えができるようにしたあいなぁ。, ということで、CreateEmptyで適当なオブジェクトを作成。赤丸のところに配置してBox Collider2D で当たり判定を付け、Is Trigger にチェックをいれる。, 問題のスクリプトだけどTriggerにplayer触れているときに何らかのボタンを押したらSceneを移動するってやつを作りたい。, Triggerに触れているときに実行するコードは OnTriggerStay2D ってやつの中に書くらしい。OnTrigger にはいくつか種類があるらしいけど今回は OnTriggerStay2D がベストかな。 I highly recommend SVN, then you can always update to latest revision easily. ・ UnityでMMDモデルを自由自在に動かしてみよう! ・ Unityを使って半日でFPSゲームを作ってみよう. さて、前回まででとりあえずの足場とキャラクターの走るモーションを作成しました。↑の動画でも解説しています。わからない、うまくいかない事があったら質問される前に、一回、動画の方で手順を確認してください, この記事は本のように順を追って解説しています。この記事は途中のページになります。この記事を見ていて、現在の状況がわからない場合や忘れてしまった事などが出てきたら↓のリンクから目次ページへ飛べますので立ち戻って見てください。, 今までの解説で現在↓のような状態になっています。アニメーションができているだけの状態ですね。, 以前、Cubeを動かした時にTransform.positionで動かしていました。, 実はUnityには移動処理というのは何種類もあって、それぞれ一長一短の動きをします。かと言って、全ての移動方法を説明していては頭が痛くなってしまうので、1つの移動方法と何故、この方法を使用するのか、そのメリットとデメリットについて解説しようと思います。, ちなみにですが、別にtransform.positionでも動かせます。ですが適切ではないです。, これが、Unityの怖いところで、動くんですよ。何種類もある移動方法のどれを使用しても動きます。でも適切ではない。×ではないが△の移動方法がたくさん存在します。, 重くなる場合が一番厄介で、少しずつ、少しずつ重さを蓄積していって、ある日突然カクカクしだすので、こういう△の手法を取ってしまうと原因を非常に特定しづらくなります。原因が1つではなく蓄積が原因ですので。, Unityで物体を移動させようとした時、大きく分けると2パターンに分けることができます。, ・物理エンジン操作・・・物理演算でオブジェクトの位置を制御する方法です(オブジェクトを動かした時周囲の状況により様々な計算が入る), 特に自分からプログラムで指定しない場合、デフォルトの状態ではTransform操作になります。, 今回は、移動の際に当たり判定を使って地面に接地したいです。その為、当たり判定は利用したいです。, ですが、2Dアクションでよく利用されるアクション類は大抵物理法則を無視することが多いです。例えば2段ジャンプとか空中ダッシュとか物理法則もクソもありません。, 当たり判定を利用する場合、物理エンジンを利用しなければなりません。ですが、物理的挙動は無視する移動を作っていこうと思います。, 今回の2Dアクションゲームでは有効な方法ですが、別種類のゲームを作る時にこの方法をそのまま使うのは△になる可能性が高いので、注意してください。, ちなみに、当たり判定を持っている状態でTransform系の移動をした場合とても重くなってしまいます。そのため、当たり判定をつけた時点でほぼほぼTransform系はNGと考えてもらっていいです。, 改めて、書き出すとイカついタイトルになっていますが、とりあえず解説していきたいと思います。, この方法を利用する場合、まず、移動させたいゲームオブジェクトにRigidobodyかRigidbody2Dを追加してください。今回は2Dアクションなので、Rigidbody2Dを追加します。前回から来た人はすでについていると思います。, このRigidbodyというコンポーネントはアタッチしたゲームオブジェクトとその子オブジェクトを物理演算で動かせるようにするコンポーネントです。, 前回のスクリプトから今、↓のようなスクリプトがプレイヤーにアタッチされていると思います。, このRigidbody2Dを使うことによってゲームオブジェクトが物理エンジンによる操作を行うことができます。が、素直に物理エンジンを使用すると2Dアクション特有の物理法則を無視することができないので変則的な使い方をします。, このvelocityというのはRigidbody2Dの変数になります。何を表しているかというと「速度」を表しています。, velocityの型はVector2です。Vector3はx,y,zでしたので、一個少ないこれはxとyだけになります。2D用というわけですね。, ということで、velocity > (x , y) で x が横方向の速度を表します。 y が縦方向の速度を表します。, 本当はvelocityを直接いじることは推奨されていません。というのも、物理エンジンがたくさんいろいろな計算を行って、物理法則になるべく近い形にするように計算した結果をこの変数に入れているからです。, つまり、この変数を直接触るということは物理演算の計算結果を捨てて、新たに数値を書き換えることに該当します。, 計算結果を捨てるのは勿体無い気がしますが、物理的な計算を極力やらせないようにすればOKです。物理的な計算は当たり判定さえ取れてればいいので、余計な事をしなければ大丈夫です。, 計算結果は捨て去られますが当たり判定の利用はできるのでちょうどいい感じだと言えます。, では、左ボタンか右ボタンを押された時velocityを変更して速度を与えてあげましょう。, この変数は横方向の速さを表します。プラスなら右方向、マイナスなら左方向になります。, この時、上に上昇したり、下に落ちたりする速度は維持したいので、velocityのY軸方向の速さをそのまま代入しています。, なぜ、このように回りくどいやり方をするかと言うと、途中でスピードを変更しやすいからです。後々、横方向のスピードを変化させる処理が出てきた時(暴風が吹いているなど)に処理を追加しやすいです。, で移動を表現することも可能です。この場合はゆっくり加速しながら移動します。今回はパッと移動して欲しいのでこの手法は見送りました。こちらがお好みの方はこの方法でもいいかなと思います。, さて、では再生してみましょう。speedが0になっていると思うのでインスペクターを調節しながら動かしてみてください。, ConstraintsのFreeze RotationのZにチェックをいれていください。これで回転しなくなります。, なんか滑っているように見えますが、とりあえず適当で大丈夫です。あとで調整できるので、本番用の絵を適用したらちゃんと調整しましょう。そのためにspeedをpublicにしました。, ・物理計算をする移動よりは軽い・物理法則を無視できる・計算しないので挙動が直感的になる。扱いやすい・物理エンジン操作なので当たり判定を考慮できる・簡単, ・物理法則を無視してしまう・物理演算で無駄になる部分がある・Transform操作系より重い・頑張ればもっと軽くなる方法がある(普通やらないけど), 今回は簡単な2Dアクションだから、velocityを直接いじっているという事を忘れずに!, また、筆者も間違えることはありますので、何か間違っている点などありましたら、動画コメント欄にでも書いていただけるとありがたいです。, さて、今回は横方向の移動をしたので、次回はジャンプと行きたいところなんですが、その前に接地判定の取り方について解説していきたいと思います。, 移動について【Unity2Dアクションの作り方】【初心者入門講座】【ゲームの作り方】#37, Unity初心者入門講座としてエディタの使い方を解説しています。インストールから基本、プログラミング、チュートリアルとして2Dアクションゲームの作り方を解説しています。また、動画での解説も行っているので未経験の人でもわかりやすいかなと思います。, Unityで詰まった場合に、どこをまず確認すべきかについて解説しています。Unityでうまくいかない、できない事があった場合はまず落ち着いて各種項目を確認していきましょう。, Unity初心者の方でもわかりやすいように簡単な2Dアクションゲームの作り方を解説しています。今回は接地判定の作り方です。地面についているかどうかを判別します。updateとfixedupdateの呼ばれ方を加味して、接地判定のフラグを正しく見れるようにしています。, わからない、うまくいかない事があったら質問される前に、一回、動画の方で手順を確認してください. By Unity.