using UnityEngine; public bool playerTurn; 先月からUnityを勉強し始め、一通り終わったためにRPGの戦闘シーンを作ろうと試みているところです。, <ゲームの仕様(質問における前提条件)> (エラー内容は"All compiler errors have to be fixed before you can enter playmode!), とりあえず質問に記載されているスクリプトの動きについて説明します。 このようなswitch文は、挟み込む場所を探すのが面倒ですし、前後の処理が不自然にならないよう注意して追加する必要があり、なかなか大変です。, ■「演出」と「ロジック」の分離     void Update () { このスクリプトではA~Dの全てのケースが実行されてしまうわけです。, また、対処法についてですがUnityではConsole.ReadKey()という関数は用いません。 狩人の攻撃力を20上昇する」だけです。この部分を「ロジック」と呼び、これを「演出」から分離を行うことで効率的に開発を行うことができる、というのが今回の主題となります。, 先ほどの狩人の処理を、そのままswitch文で実装すると以下のようなコードになります。, なぜこのように書く必要があるのかというと、演出は「再生の完了を待つ」必要があります。そのため演出の完了を待つタイミングが存在し、状態用の変数(ここではm_Step)を保持する必要があります。 0, 回答 ダンジョンRPGにする3. エラーが出ているのは存在しない関数(正確にはConsoleが存在しない)を呼び出そうとしているからでしょう。, 質問者さんが実現したいターン制のシステムには現在の形だと難しいかと思います。      rpgといえばバトルシステムです。ターン制のバトルを簡単に作るには「1対1」のバトルにします。「1対1」であれば交互に行動するだけなので、処理の流れがとてもシンプルです。 1.          はじめまして。 先月からUnityを勉強し始め、一通り終わったためにRPGの戦闘シーンを作ろうと試みているところです。 以下、質問内容になります。 <ゲームの仕様(質問における前提条件)> ・味方キャラクターは3人(A、B、C)、敵キャラクターは1人(D)。 chamlog , この記述方法は処理の流れを把握しやすいのですが、変更に弱いという欠点があります。, このような変更が発生した場合、覚醒後スキルの演出が追加となり、先ほどのswitch文の途中にその処理を挟み込む必要があります。 | 以下のリンクより一度ご覧ください。, どうも、チャーさんです。   あなたはunityでゲームオブジェクトを、 スクリプトなどから削除したいですか?   この記事では、関数を使い、 ゲームオブジェクトを削除する方法を書 …, どうも、チャーさんです。   あなたはblenderで作ったものを、 unityで表示(インポート)したいと、 思っていませんか?   この記事では、あなたが作ったblenderの …, どうも、大石です。 あなたはunityで弾の発射位置を自由に コントロールしたいですか?   この記事を読めばあなたの好きな位置から 弾を発射できるようになりますよ。   スポンサ …, どうも、チャーさんです。 あなたはunityで矢印キーで3dオブジェクトを 移動させたいですか?   この記事では矢印キーによる3dオブジェクトの 移動を実現する方法を書いてるので、 読めば …, どうも、チャーさんです。   あなたはunityでオブジェクトを回転させたいですか?   unityでゲームなど作るとオブジェクトを 回転させたい場面がありますよね。   …, どうも、チャーさん(@chaa___san)です。   あなたはUnityでオブジェクトに重力をつけたいですか?   この記事ではUnityでオブジェクトに、 重力を …, どうも、チャーさんです。 あなたはunityでコンポーネントを取得する方法を 探していますか?   この記事ではコンポーネントを取得する方法、 その際の変数宣言の書き方や、 コンポーネント名 …, どうもチャーさんです。   あなたはunityで他のオブジェクトを 取得したいがわからず困ってますか?   この記事では、unityで他のオブジェクトを 取得する方法を書いてます。 …, どうも、大石です。   あなたはunityでマウスの座標を取得したい ですか?   この記事を読めば、あなたはすぐに マウスの座標を取得できますよ。   スポンサードサー …, どうも、チャーさんです。   この記事ではunityのforeachループで get componentする方法を書きます。     なのでこの記事を読めば、   …, どうも、チャーさんです。   あなたは、unityでダンジョンを作りたいと 思っていませんか?   この記事ではunityでのダンジョンの作り方を 説明してまして、本記事を読めば …, どうも、チャーさんです。   あなたはunityのアセットの使い方が、 わからず困ってませんか?   この記事ではunityのアセットの使い方を、 1から説明してます …, どうも、チャーさんです。   あなたはunityにblenderで作ったモデルを 持ってきたものの、面が透ける現象が起こって 困っていませんか?     この記事は、透け …, どうも、チャーさんです。   あなたはunityでカメラの追従をさせたい、 こう思ってませんか?   この記事ではオブジェクトをカメラで追従させる、 (カメラが追いか …, どうも、チャーさんです。   あなたはunityでいい感じの地形を作りたい。 でも、やり方がわからない。と悩んでいませんか?   この記事では、unityで地形を作る方法を、 ステ …, 大学卒業後→開業→個人事業主7年目ぐらいです。webサイト制作したり、unityでゲーム開発しております。, youtubeもやってまして、主にプログラミング動画とかunity系の動画をあげてるので見てください。. 「演出」と「ロジック」の分離は以下のように行います。 teratailを一緒に作りたいエンジニア, // デメリット1:CPUターンのときもオブジェクトのクリックを待ち受けてしまう?. 簡単なバトルの作り方. バトルは「1対1」にする4. なお、この考え方はすべてのターン制ゲームに応用することができます。                 turn = false; //これで←行動したら相手のターンになる。     // Update is called once per frame ほかのCPUターンの場合はユーザー操作を待ち受けません。 using System.Collections; といっても、最初に何から始めたらいいかわかりませんよね。 大丈夫です! 私もそうでした。 私の浅ーい経験の中から、どうやってUnityである程度簡単なゲームを作れるようになったか、お伝え出来たらよいなと思います。 3 / クリップ bool(真偽値)を使いましょう。 そうすれば、 プレイヤーと敵が交代交代. ターン制対戦ゲームが作れる6つのテクニック あなたも6つのスキルを身につけて、23分でゲームが作れるようになります 評価: 4.1(5段階中) 4.1 (23件の評価) ユーザー操作を待ち受ける処理を追加するところで手が止まってしまいました。, 1と2はユーザのターンのみユーザー操作を待ち受ける必要があり、 ・味方キャラクターは3人(A、B、C)、敵キャラクターは1人(D)。                 transform.position = transform.position + new Vector3 (0, 0, 1); Unityで自作ゲームの作り方:概要.             }, 自作のUnity用3Dモデルを販売(基本的に無料版あり)してますので、 Unity超簡単!23分で作るターン制対戦ゲーム講座 - Duration: 24:23. どのように実装するのがよいでしょうか。 プレイヤーのコマンド選択 2. このやり方は、正確には「演出」と「ロジック」を分離できていませんが、基本的な考え方は演出の再生タイミングに依存せずにロジックの計算を行う、というものです。 今日の新作無料アセット RPG Battle ファイナルファンタジー風の「ターンバトル」の完成プロジェクトです。 新作無料 【リリース日】2019年1月11日 Atlas Maker できるだけ少ないテクスチャ枚数に抑えてパフォーマンス向上。 複数のテクスチャを1枚にまとめるアトラス化のツールです。 例えばローグライクを作るときでも、プレイヤーがアイテムを投げた際に「投げたアイテムがどの敵に当たるのか」「敵に当たって何ダメージ入るのか」「その後の敵はどのように行動するのか」ということをすべて事前計算して演出データを生成し、あとは演出データを再生するだけ、という作りにしておくと処理の入れ替えや演出の待ち時間の調整などがとてもやりやすくなります。. 弊社は「世界樹の迷宮」「ロストヒーローズ」など、ターン制RPGの開発を得意としています。そこで、今回はターン制RPGを作る際に、知っておくと開発が楽になるプログラムの技術を紹介します。, これはターン制RPGに限らないことですが、ターン制のゲームはたいてい、入力した結果が「遅れて」発生します。例えば、一般的なRPGでは、プレイヤー側のキャラクター全員のコマンド入力が完了した後、それに対する結果が再生されます。, というような行動結果が再生されることになります。ユーザはこの結果を見て、次のターンどうするかを考えるのが、ターン制RPGの醍醐味となります。         if (playerTurn == true) {, if (Input.GetKeyDown (KeyCode.UpArrow)) { このやり方は、正確には「演出」と「ロジック」を分離できていませんが、基本的な考え方は演出の再生タイミングに依存せずにロジックの計算を行う、というものです。 なお、この考え方はすべてのターン制ゲームに応用することができます。 RPGは他のジャンルと比べて、作るのが難しいイメージがあります。それはRPGが持つ一般的なイメージが「ドラゴンクエスト」や「ファイナルファンタジー」「ポケットモンスター」など、大規模なゲームを連想してしまうためです。ただ、作り方次第ではそれほど難しいジャンルではありません。以下、RPGを簡単に作るための方法を紹介します。, RPGというと一般的には、広大なマップや迷宮を探索して、モンスターを倒してお宝を入手して、街に戻って装備品を購入してキャラクターを強化する……、というゲームループが基本となっています。, これらの一連の流れが「シームレス」につながるゲームを作るのはなかなか大変です。そこで以下のように考えてみます。, これはステージクリア型のゲームシステムをRPGに置き換えたものです。ダンジョンの1フロアを1ステージとする構成です。ステージクリアの概念を入れると、ゲームとして明確な区切りが出て、目標設定が明確になり、メリハリが生まれます。, 例えば、30秒以内に魔王を倒さないとゲームオーバーになる「勇者30」がこの形式を取っています。(勇者30は中ボスが常に魔王ですが), さらに、ここでいうマップを「ダンジョン」のみにするととても作りやすいです。ダンジョンは「閉鎖空間」のため行動の自由度が制限されており、かつアート的にも "壁" と "通路" さえあれば、それっぽく見えてしまうからです。, ダンジョンの地形は、ローグライクでよくある「自動生成」にすると、さらに楽できます。, 例は「穴掘り法」によるダンジョンの生成です。穴掘り法はとても簡単なので、プログラムが得意であれば1時間で実装できます。プログラムが得意でなくても1日ほど作れると思います。, 実装例とアルゴリズムの説明はこちらに書きました。穴掘り法の良いところは、全ての通路が繋がっているため、開始地点と次のフロアに進む階段をランダムに配置しても、ゲームが成立することです。(欠点として行き止まりができやすいので、穴掘り後にランダムな座標の壁を壊しておくと、行き止まりが少し減ります), また、自動生成すると何が良いかというと、繰り返しプレイする際に変化が生まれ、リプレイバリューが上がることです。さらに PermaDeath (死んだら全てを失う) を採用するとアーケードスタイルのRPGとなり、短時間で繰り返し遊べるRPGとなります。, ただ、このPermaDeathは好き嫌いが分かれやすいので、そういったRPGは作りたいくないと考えるかもしれません。またPermaDeathはやり込みタイプのゲームを作るには不向きです。もし死んだら全て失う・アイテム持ち帰り不可といったアーケードスタイルではなく、少しずつ攻略していくようなRPGにする場合は、帰還できる拠点が必要となります。拠点からは、ダンジョンの途中からやり直すことができると遊びやすいゲームになると思います。, ダンジョンを歩き回らせるのも面倒、という場合は「ノンフィールドRPG」というジャンルにするのもありです。ノンフィールドRPGとは、マップの移動を「前に進む」「戻る」の2択だけにしてしまったゲームのことです。, 私が過去に作ったノンフィールドRPGです。こちらは「探索」しかないため、前に進むことしかできません。ノンフィールドRPGは、普通のRPGが広大なマップを歩いても何も起きない場所が多いから、いっそのこと自動化してもいいのでは? という発想から生まれたような気がします。このシステムは古くは「マリーのアトリエ」でダンジョンにアイテムを採取しに行くと"採取を続ける" と "戻る" の二択でフィールドを廃止したのが始まりで、その後「アンディーメンテ」というゲームサークルが多くのゲームで採用したり、CGIゲームで使われたりしました。そして、カードバトルRPGのソーシャルゲーム(ドラコレ・ドリランド・ミリオンアーサー)で使われるようになり、一気に広まった、という印象です。今では多くの個人制作のゲームでお手軽にRPGを作るシステムとして活用されています。, バトルにランダム要素がほとんどなく、敵のHPをちょうどゼロにすると行動回数を消費しないというプレスターンっぽいシステムにより、敵をパズルゲームのように理詰めで倒していく面白さがあります。, ……とまあ、ノンフィールドRPGはさておき、作り方次第では、拠点となる「街」を省略することも可能です。例えば、ダンジョンの中にショップや自動販売機を置いてしまえば、そこでプレイヤーに買い物をさせることも可能です。, RPGといえばバトルシステムです。ターン制のバトルを簡単に作るには「1対1」のバトルにします。「1対1」であれば交互に行動するだけなので、処理の流れがとてもシンプルです。, これに対して複数のキャラが入り乱れる「多対多」はやや難しいです。たいていは各キャラクターの速度パラメータを見て、行動順を決めるシステムにしているためです。それを実装するには、コマンドを全て入力した後に行動順でソートする必要があり、アルゴリズム的にやや複雑です。もし「多対多」を採用するのであれば、ファイナルファンタジーシリーズで採用されている、アクティブタイムバトル方式が良いかと思います。これは行動順が回ってきたらコマンドを入力する、という方式です。この方法だとコマンド入力後、即実行となるため、コマンドのソート処理が不要となり、シンプルなフローになるからです。アクティブタイムバトルの派生としては、グランディアのように、バトルに参加しているキャラクター全てを一つの直線上に速度順に並べる方式も良いと思います。, 右下に表示されているのが、行動順のバーとなります。行動順をどのように扱うかは様々な派生があります。真・女神転生Ⅲで採用された行動の選択によりターンの消費を増減させるプレスターン制、ペルソナ3で採用された敵の弱点を突くともう一度行動可能となる1Moreなど。ターン制はリアルタイム制と比べて行動が不自由なので、自由度を高める多くの試みがなされています。, あと、バトルを簡単に作るコツは、マップ(ダンジョン)とシームレスな作りにしないことです。敵との遭遇は、シンボルエンカウントもしくはランダムエンカウントとし、バトルは別のシステムとして切り離した方がシンプルに作れます。, シンプルなRPGのシステムを構築する場合、装備品を削ってしまうのもありです。理由は、装備品を装備する・しないのUIの制御処理を作るのが少し大変だからです。アイテムの種類は回復アイテムだけでも割と成立します。”防具” はレベルアップでHPが増えていけばなんとかなるので、なくてもそれなりにうまくいきます。ただ、できるなら「武器」は行動のバリエーションを増やすためにあった方が良いです。アーケードゲーム的発想で行くなら、武器を回数制限の使い捨てにするのも良いかもしれません。, シンプルなRPGを作る場合、シナリオや舞台設定は無くても問題ありません。どうしても必要な場合は、なぜ閉鎖空間に閉じ込められているのか、なぜそこに向かうのかを明確にしておきます。, ダンジョンに潜るきっかけとしては、「宝探し」「誰かの依頼」「個人的な理由(身内の救出など)」が考えられます。, 舞台として考えられるものには以下のものがあります。直接的なダンジョン以外にも「閉鎖空間」とすればどの空間も舞台にできます。, シナリオの導入タイミングとしては、「オープニング」「エンディング」の2つがあれば良いと思います。もしゲームの進行に合わせてストーリーを展開させたい場合は、ステージクリアのタイミングでイベントを挟む、というやり方もありです。, 1. キャラをActorクラスとします。, 先ほどのswitch文で修正が困難な理由は、「演出の完了待ち」がところどころに挟まるためです。 例えば2人、他CPUとした場合 ・攻撃の順番はA→B→C→D, 理想としては、まずAの戦闘ターンでPボタンを押すとAが攻撃。 シナリオイベントは「オープニング」と「エンディング」のみとする, これはRPGのバトルだけを抜き出したゲームです。ひたすらバトルを続けて100匹倒すとゲームクリアとなります。運の要素が強すぎるためゲームクリアは非常に困難ですが、シンプルなRPGの例として参考になるかもしれません。, ダンジョンシナリオのTRPGを作るときに参考になる資料です。「シナリオ・舞台設定」のパターン例を参考にさせてもらいました。. 1 / クリップ 現在、Unityを使ってチンチロリン(さいころゲーム)の作成を行っています。ユーザー操作を待ち受ける処理を追加するところで手が止まってしまいました。 <やりたいこと>このゲームを大きな流れに分割すると以下のようになります。 親以外の3人のプレイヤーが掛け金を決定する 場の全員(4人         playerTurn = true; } ブログを報告する, 【Unity】新しいステルス系チュートリアル「John Lemon's Haunted Jaunt(ジョン・レモンのお化け屋敷)」, 【Unity】チュートリアルやデモ作成に使えるかな? ゲームの動きをTimelineで再現する方法, 【Unity】一つ一つエディター上で操作を指示する、インタラクティブなチュートリアル, 【Unity】アプリ内課金やAssetBundle、ランキングの例を含むサンプルゲーム、Endless Runner Sample Game, 【Unity】逆引き自動レイアウトのトレーニング。UIをLayoutGroupで並べる, 【Unity】7.5時間を約3分に。ライトマップ(Realtime GI)のベイク時間を短縮する為のチュートリアル, 【Unity】とりあえずメニューを作るサンプルにはなる、Game Jam Menu Template, 個人でゲームを作りたい人に是非読んで欲しい!スマホ用RPG「ダンジョン999F」のメイキングが公開。素材作成やバランス調整など, 【Unity】GameObjectもECSも使いたい Hybrid ECSについて, 【Unity】NavMeshComponentsに2D対応ブランチが追加されていたので試してみた, 【Unity】AssetBundleが使用しているアセット一覧を渡してlink.xmlを生成する, 【Unity】SerializeReference、Inspectorウィンドウでinterfaceを使用する. Unity超簡単!23分で作るターン制対戦ゲーム講座 - Duration: 24:23. 質問者さんのスクリプトでは、Update()の中でfor文を呼んでいるので、switch(n) ~の全てのcaseは毎フレームで全て実行されることになります。 2020 All Rights Reserved. 現在、Unityを使ってチンチロリン(さいころゲーム)の作成を行っています。ユーザー操作を待ち受ける処理を追加するところで手が止まってしまいました。 <やりたいこと>このゲームを大きな流れに分割すると以下のようになります。 親以外の3人のプレイヤーが掛け金を決定する 場の全員(4人 これで、もし演出を追加することがあっても、簡単に修正を行うことができるようになります。, ただ、実際には、演出データクラスの定義や、生成した演出キューを再生する処理が必要になったりするため、全体のコード量は増えます。しかし、一度仕組みを作ってしまえば、処理の追加や入れ替えがとても楽にできるようになります。, ■最後に Copyright© コース評価は、コースの品質を公正かつ正確に反映するように、個々の受講生による評価に加えて、評価の時期や信頼性など複数の基準をもとに算出されます。 214人の受講生が登録 Unity超簡単!                 //行動内容の記述 ローグライクを作っていて大変だったのは、「ターン制の実装」「インベントリの実装」「ゲームバランスの調整」の3つでした。特にインベントリのコードは、1500行を超えていてなかなか複雑怪奇な作りとなってしまいました。 1 / クリップ その後Bの戦闘ターンでPボタンを押すとBが攻撃。CとDが後に続く・・・という流れです。, しかしながら、実際にプログラムを実行すると、Pボタンを押すと、ABCD全てのcaseが実行されてしまい、Console画面には"各キャラ attack"が表示されてしまいました。, これを各キャラクターの処理を一つずつ実行したいのですが、どうかご教授いただけないでしょうか?, この対処法をネット上で調べた結果、Console.ReadKey();やConsoleKeyInfoを用いるとのことだったのですが、試したところエラーが出てしまい行き詰まってしまいました。 コース評価は、コースの品質を公正かつ正確に反映するように、個々の受講生による評価に加えて、評価の時期や信頼性など複数の基準をもとに算出されます。 214人の受講生が登録 Unity超簡単! 「Unity ターン制バトル」などで検索していただくと、わかりやすい記事がいくつか見つかると思うので是非検討してみてください。, メンバ変数で現在のアタックステータス(誰が攻撃しているのか)を保持して、pボタンを押すごとにステータスを変化させてみたらどうでしょうか?, “回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。, このRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。, サイトデザイン / ロゴ © 2020 Stack Exchange Inc; ユーザーの投稿はcc by-saでライセンスされます。 rev 2020.11.13.38000, スタック・オーバーフロー をより快適に使うためには JavaScript を有効化してください, 伽語蓮弥 さんの指摘と被りますが、ターン制と言いつつ各キャラごとでの入力待ちが考慮されていない、もう1点は「Pボタンを押した場合しか考慮されていない」のがNGな理由かなと。, Feature Preview: New Review Suspensions Mod UX, unityでバイオハザードのようなカットシーンを作りたいのですがシーンの切り替えについて質問します。, 意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください). このサイトを利用することによって、あなたはこのサイトのCookie Policy、Privacy Policy、およびTerms of Serviceを読んで理解し、同意したものとみなします。, スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。すぐ登録できます。, はじめまして。 using System.Collections.Generic; Input.GetKeyDown()はキーが押された瞬間の1フレームの間ずっとtrueなので、 1, 回答 (※ユーザー操作はオブジェクトクリックを想定しています), 私は以下の二案を考えましたが、どちらもデメリットがあり悩んでいます。 ご教授いただけると幸いです。, teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。, 評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。, 上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。, プレーヤーの数が分かっているなら、             }, if (Input.GetKeyDown (KeyCode.UpArrow)) {                 playerTurn = false; 0, 【募集】

エーリヒ ハルトマン 名言 12, フィギュア 新作 2021 8, 佐藤健 映画 興行収入 36, ブリットマリー 映画 結末 5, Ark アルゲンタヴィス 捕獲施設 41, ミュージカル 刀剣乱舞 葵咲本紀 Bd 7, B'z Hinotori Zero 4, 風に なりたい 歌詞 意味 4, アメリカズゴット タレント 2016 4, 末広二重 韓国 芸能人 27, レナ 意味 外国 8, 結婚したくない 男 本音 6, ゲーセン ミカド クラファン 4, 有吉の壁 パンサー マリオ 22, Pso2 クーナ アサシン 7, 空飛ぶタイヤ 映画動画 パンドラ 12, Pubg 招待コード やり方 16, モンベル Tシャツ サイズ感 24, 山中美智子 旦那 インスタ 4, 努力 成長 四字熟語 34, 髪の毛 根元 硬い 4, ローソン チケット 予約 番号 払い戻し 5, ケープ スーパーハード 使い方 4, 西山喜久恵 娘 中学受験 19, 中島美嘉 Glamorous Sky Mp3 18, 家に出る ムカデ 種類 6, 住友林業 値引き 400万 30, 関西テレビ 役員 息子 4, 直径 3センチの 物 39, バルセロナ マスク オンライン 7, スト5 つまらない 2020 10, アカギ 対 市川 12, 木南 パン部 メンバー 32,