ホーム » 「ゲーム制作」タグがついた投稿

タグアーカイブ: ゲーム制作

スチームチャレンジ77日目

「Third Person Controller Template」というアセットを購入しました。
近接戦闘のプリセットが色々と用意してくれてるやつです。
あんまりスクリプトをいじらずにインスペクター上で完結するように設計されてるので、プログラム苦手でデザインに注力したい自分には合ってると思いました。

少し前に購入した「Camera Controller 」は、きめの細かい動きはやってくれるものの、システム構築は各自で頑張ってねっていうスタイルだったので、とにかく楽をしたい自分には合わなかったかもしれない。とにかく楽したい。
「Camera Controller 」 のほうは違う機会に、やるかも。

Character Creator3で作成した、キャラクターも無事にセットアップできました。

CharacterCreator3を買いました。

無料の人間ジェネレーターでは色々物足りなくて、かといって自力でモデリングもできなくて、迷走中だった。
いっそ有料のツールを買っちゃおうと思った次第。
CharacterCreator3は、ちょっとお値段するが、手が届かないわけではない。
このまま迷走してるよりは、勢いで買っちゃえと思いました。

さっそく試してみる。 プリセットに斧を持った戦士があったので、そのままエクスポート。 Unityに持ってったよ。

ちゃんと動きました。良かった。

カスタマイズするのにももうちょっとお金は掛かりそう。
衣装や髪、体型などのバリエーションを増やすのに、別料金かかるっぽいので、お財布と相談しながらやっていこうと思います。

自力でモデリング出来る人は必要ないツールだけれど、そうでもない人にとってはオススメかもしれない。お金は掛かるけれど。

スチームチャレンジ45日目

Spell Casting Motion Pack 」というアセットを購入した。
魔法を使うモーションと効果を、ノードベースで設定できる。

動画は、とりあえず「箱」を生み出す技のようなのを習作で作った。

こうれぐらいなら、自力で作れないこともないんだけれども、特筆すべき点は、モーション、エフェクト、効果音などの色んな要素を、すべてまとめて専用のエディッタで完結できることだ。

まあ・・・このアセットを使う前提として、 Motion Controller のアセットも事前に持っている必要があるし、 内容は、自力でできる範囲のことなので、オススメする程でもないかも。
買ってしまったものなので、有効活用したい。

制作期間、気が付いたらもう45日も経過しているな。
まだゲームらしい部分はできていないが、焦らないで頑張る。

スチームチャレンジ29日目

コインを配置して集めるということをやった。
どんなゲームにするにも、お金の概念はたいてい必要になってくるだろう。

キノコ君は、仮素材です。
キノコを主人公にゲームを作るわけではないです。
キノコを主人公にしないとも言ってない。
まだどうなるかわからない。

1月中は学習期間と割り切って、色々お勉強をしてました。
Unityの「ナビゲーションシステム」とか、 「 ProBuilder 」 とか。

今困ってるのは、人間の3Dモデルが調達できてないこと。
自分で作れたらいいんだけど、作らないで済むならそうしたい。


人間の3Dモデルを作成するツールは色々あって、色々試してはいる。
・makehuman
・MB-Lab
・VRoidStudio

どれも素晴らしいツールではあるんだけど、今回欲しいのは、フォトリアルで日本人っぽいのなので、ちょっと違う感じ。

Character Creator 3  というソフトが凄い良さそうではあるんだけど、
ちょっとお値段するから、検討中。悩む。

MotionControllerのドキュメント和訳

「Motion Controller」のアセットについて解説ページがあるものの、 英語なので、グーグル和訳したものをメモ。覚書。

導入からセットアップまでは、ここのページを参照にしたら良さそう。

ActorControllerのドキュメント和訳はこちら
Camera Controllerドキュメント和訳はこちら


概要
モーションコントローラーは、任意のキャラクターおよびゲーム用のアニメーションフレームワークおよびキャラクターコントローラーです。
それはユーザー入力と応答性を物理学より上に置く「入力ベース」コントローラーです。

アセットストアにある他の第三者のヒューマノイドコントローラーとは異なり、モーションコントローラーは柔軟です。
人間から猫、エイリアンまで、あらゆるタイプのキャラクターをサポートできるコンポーネントベースのフレームワークです。
拡張可能なように一から構築されており、独自のモーションを作成し、独自のモーションを使用することができます。
アニメーション、さらにはモーションを他のユーザーと共有します。

すぐに使えるモーションコントローラーには、アクターコントローラーが含まれています。
高度なキャラクターコントローラー。 重力、移動プラットフォーム、カスタムキャラクターシェイプ、壁の上を歩くことができます。 また、いくつかが含まれていますヒューマノイドキャラクターに使用できるビルド済みのモーション。走ったり、ジャンプしたり、はしごを登ったり、スケール壁など。


特徴
モーションコントローラは次の機能をサポートしています。
・壁、天井などの上を歩く
・プラットフォームでの移動と回転
・超高速移動
・カスタムボディ形状の作成
・15秒未満でヒューマノイドをセットアップする
・Nav Meshエージェントをサポート
・ルートモーションをサポート
・あらゆる入力ソリューションをサポート
・コードを含む(C#)


前書き
モーションコントローラは、いくつかの異なる部分で構成されています。これらの部品がどのように組み合わされるかを理解するフレームワークの使用と拡張がはるかに簡単になります。


入力ベース/Input Based
キャラクターコントローラーには通常、入力ベースと物理ベースの2つのフレーバーがあります。
入力ベースのコントローラーは、ユーザーとコードからの入力を受け取り、それを正確な動きに変換します。 これらは、より正確で応答性の高いキャラクターコントローラーを作成します。 物理的な力に対する反応をシミュレートできますが、物理ベースのコントローラーほど正確ではありません。
物理学に基づいたコントローラーは物理学の力を使用してキャラクターを動かし、物理学に基づいたシミュレーション(プールのビリヤードボールなど)に適している傾向があります。 ただし、ユーザー入力に対する応答性が低下する傾向があり、動きはそれほど正確ではありません。
モーションコントローラー(およびアクターコントローラー)は、入力ベースのコントローラーです。


アクターコントローラー/Actor Controller
これは実際の「キャラクターコントローラー」であり、移動、移動するプラットフォームへの付着、衝突、重力、壁の上を歩くなど基本的に、アクターコントローラーはこれらのことを「どのように」行うかを知っていますが、いつ行うのか、なぜ行うのかはわかりません。
アクターコントローラーの詳細については、ユーザーガイドをご覧ください。
http://www.ootii.com/Unity/ActorController/


入力ソース/Input Sources
誰もが同じ入力ソリューションを使用した場合、これは必要ありません。
ただし、Unityのネイティブ入力ソリューションを使用する人、Easy Inputを好む人、Asset Storeにある他のアセットを使用する人もいます。
つまり、モーションを1回コーディングし、任意のソリューションからユーザー入力を取得できるように、入力を取得する一般的な方法が必要です。
それが入力ソースです。
入力を取得する一般的な方法。好みの入力ソリューションを「入力ソース」にラップすることにより、MCとモーション自体が入力ソースを使用して、選択した入力ソリューションを利用できます。
モーションコントローラーには、Unityのネイティブソリューションを使用してユーザー入力を取得する方法を知っている「Unity Input Source」が含まれています。
Easy Inputには「Easy Input Source」が含まれており、必要に応じて他の「Input Sources」を作成して、お気に入りのソリューションを操作できます。


アクションエイリアス/Action Aliases
モーション全体を通して、「アクションエイリアス」を使用して、入力が発生したかどうか、およびモーションをアクティブ化する時間かどうかを確認します。 アクションエイリアスは、キープレスまたは入力条件に付けられるわかりやすい名前であり、その仕組みを理解せずに問い合わせることができます。
ジャンプモーションには、アクションエイリアスプロパティがあります。
デフォルト値は「Jump」です。
動きが見えるように見えるときジャンプするときは、次のような呼び出しを行います。
bool lShouldActivate =InputSource.IsJustPressed(“ Jump”);
モーションは、「ジャンプ」がどの程度であったかをあまり気にしません 処理されました。値がtrueまたはfalseが戻ってきます。
これはまさにUnityが入力システムで行うことです。


動き/Motions
モーションはアニメーションの流れに関するものです。
Mecanim Animatorに代わるものではありませんが、それと連携してタイミングを制御します。
アニメーションは開始時、移行時、終了時に開始されます。そのため、モーションには通常3つのコンポーネントがあります。
アニメーション、コード、および設定。彼らは協力して完全な体験を作り出します。
登山について考えてください。クライミングアニメーションを作成できますが、どのように「何を」登ることができますか?
高さが固定されていないはしごを登る場合はどうでしょうか。停止するタイミングをどのように知っていますか?
動きがはしごを登るアニメーション、これらの質問に答えるコード、および開発者が 情報を設定します。


優先順位/Priorities
すべてのモーションに優先順位が与えられます。この優先順位を使用して、どのモーションが別のモーションをオーバーライドするかを決定します。
優先度が高いほど、モーションが重要になります。
したがって、2つのモーションを両方ともアクティブにできる場合、優先度が最も高いモーションが優先されます。
2つのモーションが両方ともアクティブになり、同じ優先度を持つ場合、リストで最も低いモーションが優先されます。


モーションレイヤー/Motion Layers
Mecanim Animatorレイヤーと同様に、モーションをレイヤーにグループ化できます。このようにして、複数のモーションを作成できます。
体のさまざまな部分に影響を与えるために一度に実行します。通常、私は1つまたは2つのレイヤーで作業しますが、コードを変更せずに最大10個作成できます。


メカニムアニメーター/Mecanim Animator
内部では、MCはMecanimのAnimatorおよびAnimator Parametersを使用してアニメーションを制御します。
適切なパラメーターを設定するだけで、Mecanimステートマシンが一般的なUnityの方法でアニメーションフローを制御できます。
これを行うには、アニメーターで次のパラメーターが必要です。

IsGrounded-キャラクターが地面にいるかどうかを決定します
Stance –キャラクターの状態を定義する開発者定義の整数
InputX / InputY –「動き」入力キー/ゲームパッドの値
InputMagnitude –運動入力の値
InputMagnitude –運動入力の平均値
InputAngleFromAvatar –入力とキャラクターの前方
InputAngleFromCamera –入力とカメラの前方の角度差
コントローラーのアニメーターレイヤーごとに、これらのパラメーターのセットが存在する必要があります。 「L0…」、「L1…」、「L2…」などのラベルが付けられます。
L MotionPhase –アニメーターの状態をアクティブにする一意のキー
L MotionParameter –アニメーターの状態フローを支援する追加情報
L MotionStateTime –現在の状態の正規化された時間。値は常に0〜1(包括的)です。状態がループすると、値は0に戻ります。


ヒューマノイドアニメーターコントローラー
MCには、デモ用およびコピー用のビルド済みのアニメーターコントローラーが含まれています。以下にあります。
Assets \ ootii \ MotionController \ Content \ Animations \ Humanoid \ Humanoid.controller
アニメーターコントローラーをカスタマイズするときは、このコントローラーをコピーしてキャラクターで使用することをお勧めします。
この方法で、更新中に上書きしません。

初期設定
AnimatorのControllerプロパティは、MCの「Humanoid」コントローラーを参照する必要があります。
これは、歩行、ランニング、ジャンプ、登山などのアニメーションを含むMecanimコントローラーです。
[詳細設定/Advanced]タブには、多数のモーションを含む「移動/Locomotion」レイヤーが存在します。 これらの動きは、キャラクターが走ったり、ジャンプしたり、登ったりする原因となります。
後でリストにモーションを追加して、新しい機能を有効にしたり、独自のモーションを作成したりできることを学習します。

カスタム入力ソース

私が含めた入力ソースはオプションです。 入力ソースを作成することにより、任意の入力ソリューションを使用できます。
入力ソースは、IInputSourceインターフェイスを実装する単なるクラスです。
インターフェイスを実装することにより、クラスは「IsPressed」や「MovementX」などの特定の機能を実装することを約束します。
これらの機能とプロパティは、モーションコントローラーとモーションが入力ソリューションを活用するために使用します。
このビデオでは、入力ソースについて詳しく説明します。


クイックコーディング
たとえば、UnityInputSource.csファイルはMCに付属する入力ソースであり、Unityのネイティブ入力ソリューションを利用するために使用されます。
次のフォルダーにあります。
Assets \ ootii \ Framework_v1 \ Code \ Input
そのクラス内には、次のような関数があります。
 public virtual bool IsJustPressed(KeyCode rKey) 
 {  
      if (!_IsEnabled) { return false; } 
      return UnityEngine.Input.GetKeyDown(rKey); // <-------------
  } 

独自の入力ソースを作成するには、UnityInputSource.csをコピーし、YourAwesomeInputSource.csなどの名前に変更して、クラス名を変更します。
これで、入力ソースの必要に応じて関数の内容を変更できます。
前のコードでは、Unityの「UnityEngine.Input.GetKeyDown」関数を使用しています。
入力ソースでは、入力ソリューションを使用して関数の内容をコーディングします。

public virtual bool IsJustPressed(KeyCode rKey)
 {
     if (!_IsEnabled) { return false; }
      return YourAwesomeInputSolution.IsKeyPressedThisFrame(rKey); // <-------------
 }
ご想像のとおり、Asset Storeにはさまざまな入力ソリューションがあります。
そのため、すべてを購入して実装することはできません。
ビデオとこのセクションが、必要な入力ソースの作成に役立つことを願っています。 共有したい場合は、Vaultに追加します。


衝突とトリガー/Collisions & Triggers
モーションコントローラーは、基になるキャラクターコントローラーとしてアクターコントローラーを使用します。つまり、衝突を処理するのはアクターコントローラです。
詳細については、アクターコントローラーのガイドをご覧ください。


トリガー/Triggers
AC(およびMCの順番)は、Unityの物理エンジン(PhysX)を使用します。
ただし、デフォルトではUnityコライダーはありません。
代わりに、「ボディシェイプ/Body Shapes」を使用して、さまざまなサイズのキャラクターや基本的なカプセルではないキャラクターをサポートします。
つまり、MCはそれ自体でトリガーイベントを発生させません。
キャラクターにトリガーイベントを発生させるには、通常どおりにUnityコライダーをキャラクターに追加する必要があります。
これは、Unityの標準手順に従っています。


トリガーボリュームとの衝突
MC(およびAC)はUnityレイキャストを使用して衝突を管理します。ただし、Unityのレイキャストはトリガーボリュームと衝突します。つまり、コライダーの[トリガー]がオンになっていても、キャラクターはコライダーと衝突します。

キャラクターがトリガーボリュームと衝突しないようにするには、レイヤーをUnityの「レイキャストを無視」レイヤーに設定するだけです。

ユーザーインターフェイス/User Interface
ユーザーインターフェースを2つのセクションに分けました。
基本セクションと詳細セクションです。
ヒューマノイドキャラクターの場合、基本ビューは必要なもののほとんどを提供します。
ただし、独自のモーションを作成する場合、値を微調整する場合、または非ヒューマノイドのモーションを使用する場合は、詳細ビューを使用します。


基本ビュー/Basic View
移動スタイルボタンのいずれかをクリックするだけで、ほとんどのセットアッププロセスをショートカットできます。
そうすることで、モーションコントローラは入力ソースを作成し、カメラをセットアップし、必要に応じてモーションを追加します。

運動スタイル/Movement Styles
さまざまな第三者のスタイルのゲームプレイをサポートするために、私は 模倣するさまざまな「ウォークラン」モーションが含まれています。
・MMOスタイル
・アドベンチャースタイル
・シューティングスタイル

オプション/Options
[Options]セクションでは、組み込み済みのモーションを簡単に追加できます。
必要なモーションをチェックするだけで、デフォルトの設定で追加されます。
いくつかのモーションでは、どのUnityレイヤーが操作可能なオブジェクトを識別するかを指定する必要があります。


詳細ビュー/Advanced View
このビューを使用して、モーションプロパティをカスタマイズしたり、作成したモーションを有効にしたり、シンプルモーション機能でアニメーションを使用したりします。
モーションレイヤー/Motion Layers
必要に応じて、レイヤーを追加、削除、および名前付けします。追加する各レイヤーには、モーションのコレクションを保持できます。
レイヤーの数は、Mecanim Animatorで使用するレイヤーの数と一致する必要があります。

モーション/Motions
モーションレイヤーを選択すると、モーションレイヤーに含まれるモーションのリストが表示されます。
リストには次が表示されます。
・モーションタイプ
・モーション名(テキストフィールド)
・モーション優先度(数値フィールド)
・有効化フラグ(チェックボックス)
行の左側にあるアイコンを使用して、順序を並べ替えることもできます。
これは、モーションの優先度値が同じ場合に役立ちます。最も低いものが優先されます。

モーション詳細
モーションを選択すると、リストの下に詳細セクションが開きます。

上部(説明がある部分)は一般的なものです。
ここで、フレンドリ名(検索も可能)を追加し、優先度を変更できます。
再アクティブ化遅延は、モーションが再びアクティブになるまで待機する必要がある秒数です。 0は遅延がないことを意味します。

下の部分(線の下)は、モーション固有のプロパティです。それらのすべてに役立つツールチップがあります。プロパティ名にカーソルを合わせると、プロパティの機能が説明されます。

モーションコントローラーイベント/Motion Controller Events
コードとの統合をサポートするために、Motion Controllerは次の3つのイベントを公開します。
MotionActivated
この関数は、モーションの「アクティブ化」関数が呼び出されると起動します。
モーションが存在するレイヤー、モーション自体、および非アクティブ化される古いモーションが含まれます。
MotionUpdated
この関数は、モーションの「更新」関数が呼び出された後に起動します。
モーションはそれ自体を非アクティブ化できるため、MotionDeactivatedイベントが呼び出された後に呼び出されるのを確認できます。
これは、更新イベントが非アクティブ化されて終了したためです。
MotionDeactivated
このイベントは、モーションの「非アクティブ化」関数が呼び出されたときに発生します。
モーションが存在するレイヤーとモーション自体が含まれます。
MotionDeactivatedイベントは、現在のモーションが非アクティブ化される方法に基づいて、MotionActivatedイベントの前または後に起動できます。



以下は、イベントを利用する方法の簡単な例です。
using UnityEngine;
using com.ootii.Actors.AnimationControllers;
public class dev_Simple_Code : MonoBehaviour
{
 public MotionController mMotionController = null;
 void Start()
 {
 mMotionController = gameObject.GetComponent<MotionController>();
 mMotionController.MotionActivated += MotionActivated;
 mMotionController.MotionUpdated += MotionUpdated;
 mMotionController.MotionDeactivated += MotionDeactivated;
 }
 protected void MotionActivated(int rLayer, MotionControllerMotion rNewMotion, MotionControllerMotion rOldMotion)
 {
 Debug.Log(string.Format("Activated m-new:{0} l:{1}", rNewMotion.GetType().Name, rLayer));
 }
 protected void MotionUpdated(float rDeltaTime, int rUpdateCount, int rLayer, MotionControllerMotion rMotion)
 {
 Debug.Log(string.Format("Updated m:{0} l:{1} dt:{2:f2}", rMotion.GetType().Name, rLayer, rDeltaTime));
 }
 protected void MotionDeactivated(int rLayer, MotionControllerMotion rMotion)
 {
 Debug.Log(string.Format("Deactivated m:{0} l:{1}", rMotion.GetType().Name, rLayer));
 }
}

ドキュメントの和訳はここで半分ぐらいだけど、後半は複雑なので割愛。

Archery Motion Packもやってみる。


「Motion Controller v2 」と同じ方が作ったアセットが色々ある。
弓矢で攻撃ができるアセットArchery Motion Packと、
剣と盾のアセット Sword & Shield Motion Pack を併せて購入。

とりあえず今日は弓矢のアセットがどんなものなのかを試してたところ。
導入の手順が結構ややこしくて、手間取ってた。
独自の仕様と付き合わなきゃいけないみたい。

でもまあ、モーションの動きの生々しさと操作性はとても良い。
こういうのは自力では作れない。やっぱり買ってよかったと思う。

こういう基本的なシステムはアセットに頼るだけ頼って、
他の部分に力を入れていけたらなあと思う次第。

スチームチャレンジ10日目

主人公のモデリングをしようと思ってたが、
失敗が続く。ふて寝。そのうち作る。

その代用品に、きのこ人間を作った。
主人公を作るのはいったん保留にして、他の作業を進めます。

そして、環境を整えようとアセットストアを漁ってました。

Motion Controller v2 」という 、キャラクターの操作を細かく設定できる有料アセットを購入しました。
梯子をのぼったり、段差を飛び越えたり、ちょっと複雑な動きができるみたいです。
まだ学習中。

とりあえず作ったキノコ人間を、とりあえず歩かせてみた。
ただ歩いてるだけではあるんだけど、動きが生々しい感じが伝わると思います。
さすが有料アセットと思いました。

そろそろ、どんなゲームにするかを固めていかないといけないな。
でも1月中は、アセットストアを漁りながら、イメージを固める時間になりそう。
ゆっくり進めます。

MB-Labをやってみる(覚書)

3Dゲーム作るのに人間のモデルが必要になる。
自力で作りたいが、自分の技術ではクオリティー的に悲しい部分が出てくる。

それで、人間モデルのプリセットを探しました。

アジア系でリアル路線のものが作れるやつがいいなと。
blenderのアドオンに「MB-Lab」があった。

早速導入。

MB-Labの公式サイトに導入までの解説があって、それを参考にしました。

以下、覚書。

MB-Lab を導入し、Nを押すと「MB-Lab」のタブが増えてる。
「キャラクターの作成」するボタンで
画面に人間が生まれた。
パンツははいてる。
ちょうど乳首の位置にボーンがあって、乳首が大きい人に見えるけど、気にしなくて大丈夫。
出現した人間の、年齢、質量、筋肉量などを調整する。
「確定」するボタンを押すと、 blender 規格のモデルとして完成する。

スチームチャレンジ3日目

2年前ぐらい前。
Unity内部で簡単にモデリングができるアセット「 ProBuilder 」が無料化した。ちょっとそれをやってみたいと思った。
Unity2019.2.17f1の時点では ProBuilder 2.xになってた。
ヴァージョンは新しいほうがいいだろう。

ステージエディットぐらいなら、これで色々できるみたい。
ダンジョンとかはこれでいこうと思うんだ。

公式の解説ページはこちら
詳しい使い方について紹介してるブログはこちら

早速試してみた。
ちょっといじってみただけだけど、階段とか押し出し機能が良い感じ。
全部は把握してないけど、これだけでも充分素晴らしい。

ダンジョンとか、室内のステージとかは、これでいこうと思う。
まだどんなゲームになるかわからないけど、どんどん形にしていきたい。

スチームチャレンジ 最初の日

新年になって、新しいことに挑戦したい。
それで思いついたのが、今年中にSteamでゲームをリリースすること。

でもその為には、
100ドルのパブリッシング経費が必要になる。
それなりのハードルだけど、新年の勢いで頑張ろうと思った。

どんなゲームにしたいかも、同時に考える。

壮大なスぺクタル巨編を目指して収拾がつかなくなることが、
これまで何度もしてきた。

ので、

どうしてもここは頑張りたいポイントと、
作端折るポイントをちゃんと計算しながら、
良いものを仕上げたい。

早速Unityを起動。
とりあえず、プレイヤーを歩かせて、草木が茂る森を作った。
全て、無料のアセット。

自作素材で頑張った方がいいんじゃないかと思ってた時期もあったけど、
頑張るのは、モンスターのデザインだけにしよう。

セールスポイントは、モンスターの独自性でいきたい。

こうして最初の一歩を踏み出しました。
果たしてスチームでリリースできる日は本当にくるのか。

応援、よろしくお願いします。

管理人

ハンドルネーム:タケハタ
本名:波田野剛望(はたのたけみ)

お絵描きとゲームが好きなオス。
2020年の目標は、スチームでゲームをリリースすること。