とりあえず無視して 右クリック -> Create State -> From New Blend Treeを選択して、 /** よくみるパラパラアニメをするための絵を一つの画像ファイル(透過png)にまとめたものです public class AnimationStateController : MonoBehaviour { Animator Controllerを作成していきます。, 「X軸に進むなら右のアニメーションを再生」といった動く方向に対して を選択します, そうすると別ウインドウにTo begin Animating ...といった文言と if (action.HasValue) { お仕事はWeb系のエンジニアでReactやらSpringやらなんかあれば触るんですが } } 戦闘シーンで選択する項目は『直接攻撃』『防御』『魔法』『アイテム』等がありますが、これらをスキルデータとしてあらかじめ作成しておき、戦闘に参加するキャラクターが保持出来るようにします。, 全てのスキルの元となるスクリプトSkillスクリプトをAssets/RPG/Scriptsに新しくSkillフォルダを作成し、その中に入れます。, Skillスクリプトはアセットファイルを作成出来るようにCreateAssetMenuアトリビュートを取り付けています。, kanjiNameはスキルの漢字名、hiraganaNameはスキルの平仮名、informationはスキルの情報です。, skillUserEffectはこのスキルを使用した人の方に表示するエフェクト、skillReceivingSideEffectはスキルを受けた側に表示するエフェクトを設定します。, ほとんどのスキルはSkillスクリプトからアセットファイルを作成しますが、魔法系のスキルは魔法の攻撃力や使用するMP、魔法の属性等の追加情報が必要なのでSkillスクリプトを継承してMagicスクリプトを作成します。, Skillスクリプトを継承してMagicスクリプトを作成し、CreateAssetMenuアトリビュートを取り付けてアセットファイルを作成出来るようにしています。, スキルデータの元となるスクリプトが出来たので後は実際にスキルデータを作成するだけです。, Assets/RPG/Data/Skill/Normalフォルダに通常のスキルデータを作成していきます。, 右クリックからCreate→CreateSkillを選択し、名前をDirectAttackとします。, DirectAttackのSkillReceivingSideEffectに設定したエフェクトはアセットストアで『Cartoon FX Free』で検索して出てくるアセットの中のパーティクルを指定しています。, Assets/Effect/JMO Assets/Cartoon FX/CFX Prefabs/Hits/CFX_Hit_C_Whiteを設定しました。, これ以降エフェクトにはいくつかパーティクルゲームオブジェクトを設定しますが、各自自由に設定してみてください。, Assets/RPG/Data/Skill/Magicフォルダで右クリックからCreate→CreateMagicを選択し、魔法の名前を設定します。, 今回はFire、Healing、IncreaseAttackPower、IncreadDefencePower、NumbnessMagic、PoisonnousMagic、Thunderを作成しました。, IncreaseAttackPowerとIncreaseDefencePowerは, NumbnessRecoveryとPoisonnousRecoveryはmagicPowerが必要ないのに持ってしまっていますのでSkillを継承した別のスクリプトを作成しそこからアセットファイルを作成した方がいいかもしれません。, スキルデータを作成したのでキャラクター毎に持っているスキルを設定する必要があります。, 味方でも敵でもスキルは持っているのでCharacterStatusスクリプトにスキルを保持出来るようにします。, これでキャラクター毎にスキルを設定出来るようになったの個々のキャラクターのステータスにスキルデータを設定します。, ユニティちゃんのステータスはAssets/RPG/Data/Status/Ally/UnityChanなので選択しインスペクタでスキルを設定します。, その他Assets/RPG/Data/Status/Ally/YujiStatusにもスキルを設定します。, 後はAssets/RPG/Data/Status/Enemyフォルダの敵のステータスにも設定します。, 今回は戦闘で使用するスキルデータの作成をしましたが、戦闘シーンでは魔法の属性を使っていなかったり、痺れや毒からの回復等の処理も作成しません。, 色々なデータをとりあえず作ってみたというだけで、実際に処理を作る場合はそれ用の処理を入れてみてください。, メールはこちらにお願いします(記事に関する質問は送らないでください)。 とりあえず最低限それっぽく動くコードです。コメントを一応書いていますが、コピって動かして後で理解でも良いと思います。 オブジェクトを操作していますが Rigidbody#AddPositionといったメソッドなど、 すると、アニメーションファイル一覧を表示したウインドウが表示されるので 最後にやっとスクリプトを書きます。, …むしろここまでスクリプト何もいらないんだからさすがUnity先生 By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. * 特定のキーの入力があればキーにあわせたVector2インスタンスを返す // キー入力が続いている場合は、入力から作成したVector2を渡す */ (int)Input.GetAxis("Vertical")); 一番下にAdd Componentというボタンがあるので、それを押すと下のような項目一覧がでるので // Animatorを取得する if (Input.anyKeyDown) { // それぞれ+や-の値と入力の関連付けはInput Managerで設定されている, /** キャラクター、アイテム、発射物や他の 2D ゲーム要素として使用される 2D グラフィックスオブジェクト, スケールとユニット return; 落ち着いたらゲーム制作再開したい. 可能な限りシステムとデザイン部分を分離していい感じの作業の進め方も模索していきたい。そんなpart1でした。, しがないエンジニア。楽しくモノづくりがしたい。 vector : (Vector2? } /** * 特定のキーの入力があればキーにあわせたVector2インスタンスを返す 先程作成したファイルを選択します。これを全方向分追加します。, 追加したファイルの名前の横に Pos X Pos Yという項目があると思うのでそれぞれ下のように入力してください。 処理を外して確認するとわかるのですが、上の実装では動き始めてから一定の移動量を超えるまで return; * Animatorに状態をセットする 趣味のゲームを作りたい欲からUnityを触り始めてみました。, 直近の目標は昔ながらのDQっぽいシステムのRPGを作るお勉強なので学んだことをまとめる 最後に前項でつくったAnimator Controllerを組み合わせて、動く方向にあわせて向きが変わるようにしていきます。, サンプルコードをみる // キー入力があればAnimatorにstateをセットする 尺度(スケール)と測定単位(ユニット)は、現実のようなシーンを作る上で非常に重要な役割を果たします。 リアリスティックなビジュアルを目指す作品の場合、一般的には 1 Unity ユニット = 1m(100cm)と想定することが推奨されます。多くの物理システムの単位のサイズがこの想定になっているからです, 左上のSliceを選択して、一番上に表示されているType: Automaticを ), HDリマスターで新・女神転生3が出来る!かなりやりつくしたゲームだけどまたやりたいなぁ・・・・, ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。これからゲーム作りを始めたい人にはいいかも?, ユニティちゃんのRPGを作ってみよう20ー戦闘シーンにキャラクター名、HP、MPを表示するー, ユニティちゃんのRPGで戦闘シーンにキャラクター名、HP、MPを表示する機能を作成します。, Unityを使った3Dゲームの作り方(かめくめ)で、はじめてUnityの学習をする時の当ブログの記事を読む順番を書きました。機能を積み上げていく形になるので便利かも?, Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。, Unityインターハイとは、ユニティー・テクノロジーズ・ジャパン主催の高校生・高等専門学校生のゲーム開発全国大会です。, UnityのML-Agentsを使って敵キャラを強化学習して主人公を追いかけるようにする, UnityのVisual Effect GraphのOutput Particle Forward Decalで銃の弾痕エフェクトを作成し使用する. 「何もキーが押されてない状態から押された状態になったとき」だけなので private Vector2? * https://docs.unity3d.com/ja/current/ScriptReference/MonoBehaviour.Update.html Copyright © 2016-2020 かめくめちゃん All Rights Reserved. Assets内の画像の右についてる矢印を押すと、下のように分割した状態で展開される, 画像を分割したので次はAnimationの作成をしていきます。 オブジェクトの位置を変える方法はいくつもあるのでそれぞれの特性を活かして実装していけるとよいかと思います。 Createボタンが表示されるので、ボタンを押すとAnimationファイルの新規作成を行います。, 左上にファイル名が表示され、その下に Add Propertyといったボタンがあるので押し * */, /** もうわかってきたかもしれませんが、x軸とy軸の移動に対してそれぞれのアニメーションを切り替える作業をこれがよしなにやってくれるようになります。, ただ、これだけでは実行しても向きも変わらないし位置も変わらないので Edit -> Project Settings -> Inputから見れます, また、上記ではオブジェクトの速度であるvelocityに対して値をいれることで そう、備忘録です, を前提に書きます。 Vector2 vector = new Vector2( 矢印キーで入力されたHorizontal, Verticalの値を取得して void Start() { …自然というよりは昔ながらのRPGっぽい歩行になります。, 上の再生ボタンを押すとアニメーションが確認できます using System.Collections; ウインドウ上部の再生ボタンを押すと実際に入力に対して動くか確認できます。, キー操作にあわせてオブジェクトが動くようになりました。 using System.Collections.Generic; * https://docs.unity3d.com/ja/current/ScriptReference/MonoBehaviour.Update.html (int)Input.GetAxis("Horizontal"), setStateToAnimator(vector: action.Value); actionKeyDown() { おはようございます。おーみん(@Ooooooomin_365)です。 現在Unityで自作ゲームを作成中です。 今回の記事では、RPGでよく見られる戦闘シーンの場面の作成方法について忘備録を残していきます。 イメージを掴んでもらうために、完成画像をあらかじめ載せておきます。 Type: Grid by Cell Countに変更して、ColumnとRowに分割する値を設定する。, RPGツクールの歩行画像は以下のような形で`Column: 3 Row: 4で配置されているので if (!vector.HasValue) { // キー入力がなければ null 移動ベクトルに応じて変化させたいので xとyという名前で追加。 ゆるい話ははてブに書いてます。もっとゆるいのはtwitterに書いてます。 だいぶ昔にDxLibでなんかやろうとしたことが懐かしい(^o^, アニメーション作成時にできた左側のオブジェクトをクリックして、オブジェクトのinspectorを表示すると 本業もそうですが、やっぱり完成物がこうやって動く瞬間が一番楽しいです。, アニメーション読み込みからBlender Treeの設定までは ノンプログラミングでできそうな感じ?なので /** AssetsにC#と書かれたアイコンが作成されると思うので、ダブルクリックをするとVisual Studioが開かれると思います(ちょっと時間かかります), Visual Studio Tools for Unity の使用を開始する - Visual Studio | Microsoft Docs, Unity 2018.1 以降、Visual Studio は Unity の既定の C# スクリプト エディターであり、Unity Download Assistant および Unity Hub インストール ツールに含まれます。, とのことなので導入の手順は飛ばしますが、必要あればリンクを参考にしてみてください。, スクリプトファイルを作成でつくったファイルにコードを足していきます。 * Update は MonoBehaviour が有効の場合に、毎フレーム呼び出されます * なければnullを返す Rigidbody 2Dはオブジェクトの動きを物理エンジンで制御するためのコンポーネントです。 // 初期化 if (Input.GetKeyDown(KeyCode.DownArrow)) return Vector2.down; C#使いますが、Unity以外のC#の書き方云々とかは基本的に説明書きません, RPGツクールの歩行素材を参考にオリジナルキャラのドットを作りました ここから、前後左右が描かれている歩行アニメーションの画像を分割してUnity内で別々に扱えるようにしていく。 this.animator.speed = 0.0f; Vector2? * キャラの向き状態を変更するController Window -> Animation -> Animation // 入力からVector2インスタンスを作成 * なければnullを返す プロパティが追加されたら、ファイル名横に表示されている Samplesを4にします。, RPGツクールのそれぞれの方向の画像(Column)は3つしかありませんが、以下の通りにアニメーションを繰り返します, こうすることで自然なアニメーションになります What is going on with this article? 作成されたブロックをもう一度右クリックして Set as Layer Default Stateを選択します。 */, /** 今回RPGツクールを参考につくった画像もそのとおりに値を指定する。, で、指定後にSpriteボタンを押して上部のApplyを押すと完了。 型はFloatを選びます。, 上でつくったBleder TreeのStateをダブルクリックすると下記のように何も設定されていない vector) { Help us understand the problem. また、環境はMacなのでWinの人はいい感じに読み解いていただけるとありがたいです Sprite Renderer -> Spriteを選択します。 if (Input.GetKeyDown(KeyCode.LeftArrow)) return Vector2.left; Unityがメソッド名もUpperCamelCaseを推奨してるのに lowerCamelCaseで書いてしまう…癖です, 1で、keyDownの瞬間に方向を変えるようにしているのは 下のような表示がされるのでそれぞれ設定を変更します。, 入力したらMotionの下にある +マークをクリック -> Add Motion Fieldを押します。 このカテゴリではユニティちゃんのRPGを作っていきますが、作り方はわたくしの作り方であり、これがベストな作り方というものでもなく、エラーが発生したり、面倒な処理をしている個所もあると思います。 UIのデザインやテキストのサイズ等もゲーム全体で統一されていません。 なので記事を読んだ方がその都度、修正したり、こんなやり方の方が効率いいかも?と試行錯誤して変更してみてください。 「Unityで3DRPGを作ってみたい!」と思う方に大雑把でもこんな感じでも作れますよーというのを … 進む方向とアニメーションの向きを揃えた設定をするだけです。, とりあえずこれでAnimator Controllerの設定は完了です。 void Update() { それぞれが何をしているか誰でもわかるようないい名前をつけていきましょう!, visual studioでスクリプトファイルを修正し コレ以上はこだわりポイントなのでここでは割愛します。, といったことを行いました。 */ ユニティちゃんのrpgの戦闘シーンで使用するスキルデータを作成してきます。 ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。 kamekumechan@gmail.com, いずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。, ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;), 名前の由来はカメが好きだからです。 とりあえずオブジェクトを操作するのにセットする必要があるぐらいの認識でいいと思います。, 右クリックから Create -> C# Scriptを選択してファイルを作成。 )null); 今回の記事では、RPGでよく見られる戦闘シーンの場面の作成方法について忘備録を残していきます。, よし、戦闘シーンの大まかな画面はこんな感じでいいでしょう。ここから攻撃動作、そしてHPやMPの増減、魔法のエフェクト、などなど細かな設定をしていきます。大変だけど、完成させたら相当unityの力は付いてるはず。頑張ろう。#unity #unity3d pic.twitter.com/u4P4jNjFhF, ※あくまで忘備録なため、ササッとまとめています。分からない点などがございましたら、Twitter、お問い合わせ、もしくはコメントなどから質問くださればお答え致します!, 完成画像の右下にあるキャラの名前とHPなどの表記については以下の記事を参考にさせていただきました。, Create→UI→Panelで画面上のどの部分にキャラの名前やHPを表記するか設定し、Create→UI→Textで表記を行うといった流れですね。, 次回以降はフィールドを歩いているときに敵とエンカウント後、今回作った戦闘シーンへ遷移する様子を作っていきたいと思います。, 戦闘では魔法も用いたために、この戦闘シーンの場面にMPを追加し、画面左下には「たたかう」「攻撃魔法」「回復魔法」などのコマンドを追加しました。, 【Unity22話】フィールドを歩いてたら敵が出るRPGの設定。 - おーみんだよ。, bookreadkunさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog /** * Animatorに状態をセットする ブログを報告する, おはようございます。おーみん(@Ooooooomin_365)です。 #Unit…, おはようございます。おーみん(@Ooooooomin_365)です。 Unity…, おはようございます。おーみん(@Ooooooomin_365)です。 unity…. private void setStateToAnimator(Vector2? 静的型付けをしてくれる言語が好きで、愛のない変数名は駆逐する。 とりあえずファイルはMoveControllerとつけます, 一応名前は何でも良いですが、プログラムのファイルやクラスや変数名は } */ 今日の新作無料アセット RPG Battle ファイナルファンタジー風の「ターンバトル」の完成プロジェクトです。 新作無料 【リリース日】2019年1月11日 Atlas Maker できるだけ少ないテクスチャ枚数に抑えてパフォーマンス向上。 複数のテクスチャを1枚にまとめるアトラス化のツールです。 } * 下のようにプルダウンメニューが表示されるので、Create New Clipを選択して テンション上がってきますね(gifの速度は若干遅めです), 左上のファイル名をクリックすると 下の完成品を見るとわかるかもですが、移動中に方向を変えたときにInput.anyKeyDownがtrueにならないので、, 昔ながらのRPGぽくキーを押した瞬間移動方向と向きが変わっていないのがわかります。 Body Typeを Kinematicにすることで、物理演算が無視されて2Dのうごきっぽくなります。, Dynamic指定のままで動かすと、おそらくキャラクタがだんだん画面下へ落ちていくような動きになります。 if (Input.GetKeyDown(KeyCode.UpArrow)) return Vector2.up; if (Input.GetKeyDown(KeyCode.RightArrow)) return Vector2.right; } using UnityEngine; * Update は MonoBehaviour が有効の場合に、毎フレーム呼び出されます */, Qiita Jobsで転職すると、お祝い金30万円がもらえるキャンペーンを実施中!, 【Unity】ツクール規格の2Dキャラクターの移動を実装する - Yumineko, Tight指定をするとアルファの余計な部分をクロップされるのでとりあえずFull Rect, ドット絵をベースにしているので1指定。扱う絵によっていい感じに指定する値。ユニットについては下記参考, スクリプトの編集のおとも。入力候補が表示されるのでUnityのAPIを雰囲気理解でも助かる, キーが押された後 / 押されていないときの値はオブジェクトの位置を動かすときと同様に, RPGツクールのような歩行グラフィックがまとまった画像をSplitしてアニメーションさせる, you can read useful information later efficiently. } 係数(SPEED)を掛けた値をそのまま速度としてvelocityにセットしています, HorizontalやVerticalに対して、プラス方向のキー、マイナス方向のキーがどれかといった設定は return null; setStateToAnimator(vector: vector != Vector2.zero? this.animator.speed = 1.0f; }, 長いので、必要あれば展開してください! ドット絵作成は FireAlpaca つかいました。フリーなのにできる子です。, 用意した画像をProjectのAssetsにドラッグ&ドロップするとプロジェクトに画像が登録される。 Why not register and get more from Qiita? 全然プロフィールになってないな・・・・(-.-), の記事に記載の順番で見て頂くとUnityの基本的な使い方がわかり、簡単なTPSゲームの作成までが出来ます。, わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._. すると、Entryから生えている線が作ったブロックに向きます。, 残ったそれ以外の色がついていない四角はとりあえず消しましょう。 Unity 2018.1 以降、Visual Studio は Unity の既定の C# スクリプト エディターであり、Unity Download Assistant および Unity Hub インストール ツールに含まれます。 とのことなので導入の手順は飛ばしますが、必要あればリンクを参考にしてみてください。 向きが変わらないため、押した瞬間に向きが変わるように制御しています。, Input.anyKeyDownがtrueになるのは this.animator.SetFloat("y", vector.Value.y); this.animator = GetComponent(); 動かしたいオブジェクトに対してドラッグ&ドロップで関連付けさせましょう, ここでは、入力されたキーを取得してx,y軸の移動量を計算してセットするのではなく 今回はとりあえずvelocityに値を設定, 上記のスクリプトとキャラクターのオブジェクトに関連がつけられたら this.animator.SetFloat("x", vector.Value.x); Debug.Log(vector.Value); */ // コントローラをセットしたオブジェクトに紐付いている 画像の名前でオブジェクトが追加され、画面上に画像のキャラクタ(Spriteで分割した左上の部分)が表示されると思います。, その後、追加されたオブジェクトを選択した状態で action = this.actionKeyDown(); 適切なアニメーションを表示するといった制御をよしなにやってくれる