サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
gametukurikata.com
今回はUnityのTextMeshProを使ってみたいと思います。 既に他の記事でも使っていますが、改めてTextMeshProの使い方について見ていきたいと思います。 TextMeshProを試す場合は、既存のプロジェクトに追加する前に新しいプロジェクトでインポートして試してみた方がいいです。 今回使用しているUnityエディターのバージョンは2020.2.7f1になります。 TextMeshProとはTextMeshProは以前からあるTextMesh(3Dのテキスト)とUGUI(UnityのUI)を代替することが出来る機能で、高度な制御が可能となっていたり、接写時もテキストが滲むようなことがなくなります。 以下が3つを比較したもので、TextMeshはテキストが滲んでいます。 UGUIとTextMeshProは変わりがないように見えますが、よりカメラを近づけるとUGUIも少し滲んでい
変数は再生モード中に変更した値は元に戻りますが、インライン(グラフ中のみで使用している値)の値は再生モードを解除しても値は変更されたままになります。 変数はドラッグ&ドロップしてグラフ上に配置出来ます。 ドラッグ&ドロップして配置した場合はGet Variableユニットになります。 ユニットユニットは処理の単位で、何らかの処理を実行する単位です。 グラフの何もない所で右クリックする事であいまい検索(ファジー検索)画面を開いて、ユニットを選択したり、検索窓に対象を絞った検索をしてユニットを選択することが出来ます。 その他ユニットのポートからドラッグして、接続できるユニットから選択することも出来ます。 ポートポートはユニットに付いている接続部分で、処理の流れを作るフローポートと値を渡すデータポートがあります。 上の例ではStartユニット(スタート時に1回実行される)からDebug Logユ
今回はUnityの新しい入力システムであるInputSystemを使ってみたいと思います。 現時点(2019/11/13)ではまだプレビュー版ですが、今後はInputSystemが使われ、おそらく以前から使用しているInputManagerが廃止されていくような感じですね。 いつInputManagerが使えなくなってもいいようにInputSystemを使えるようにしておくことにしました。 InputSystemを使用するにはUnity 2019.1+および.NET 4ランタイムが必要です。 InputSystemのインストールUnityのメニューのWindowからPackage Managerを選択し、開いたウインドウのAdvancedの部分を押してShow preview packagesを選択します。 Show preview packagesにチェックを入れるとプレビュー版の機能も
を参照してください。 HDRPではHDRP用のポストプロセスがありますのでそちらを使用します。 PostProcessingV2を使ってみるそれではPostProcessingのV2を使ってみましょう。 HDRPでポストプロセスを使う場合はPostProcessVolumeとPostProcessLayerの設定は必要ありませんのでHDRP用の設定まで項目を飛ばしてください。 まずはヒエラルキー上で右クリック→3D Object→Post-process Volumeを選択します。 Post-process VolumeがPostProcessingの設定をするPostProcessingProfileを設定するゲームオブジェクトになります。 空のゲームオブジェクトにコライダとPostProcessing Volumeコンポーネントを取り付けても同じように作れると思います。 Post-pr
中断中だとわかる為のUIを作成するヒエラルキー上で右クリック→UI→Panelを選びます。 Panelを選ぶとCanvasも作られます。Panelの子要素にUI→Textでテキストを作成します。 上のような階層が出来上がりました。(CanvasはPauseUIという名前に変更してあります) Textのインスペクタでは表示する文字とテキストのサイズ、BestFitにチェックを入れておきます。 Alignmentも中央の真中表示にします。 Panelの色やTextの色等を変更してご自分の好きなようにカスタマイズしてください。 出来たらAssetsフォルダにPauseUIをドラッグ&ドロップしてプレハブにします。 このプレハブをスクリプトから出現させる事にします。 プレハブ化が出来たらシーン上のPauseUIは削除してかまいません。 ゲームを中断させるスクリプトを作成では次に中断をスクリプトで実
ParticleSystemの設定項目を見ていくParticleSystemはヒエラルキー上で右クリック→Effects→Particle Systemを選択する事で作成出来ます。 作成したParticleSystemを選択するとインスペクタに設定項目が表示されます。 モジュール毎に分かれており、使用したいモジュールを選択するとそのモジュールを使用します。 それではParticleSystemの設定項目を見ていきましょう。 メインモジュールまずはParticleSystemのメインモジュール設定を見ていきましょう。 DurationはParticleSystemが実行する時間(パーティクルの1サイクル)の事で、パーティクルを放出し続ける時間です(Loopingのチェックをしていない時)。Loopingにチェックを入れるとパーティクルを繰り返し放出するように出来ます。Prerwarmはパーテ
using UnityEngine; using System.Collections; public class InterpolationMove : MonoBehaviour { public enum Mode { Normal, MoveTowards, Lerp, Slerp }; // キャラクターを動かすモード [SerializeField] private Mode mode; //キャラクターコントローラー private CharacterController cCon; // キャラクターの速度 private Vector3 velocity; // 前の速度 private Vector3 oldVelocity; // アニメーター private Animator animator; // 歩く速さ [SerializeField] private fl
今回はファイルを開いて中身を読み込んだり、データを書き込んだりしてみようと思います。 ゲームの会話部分を外部のテキストファイルに保存しておいて、それを読みだして利用する時などに使うと思います。 ファイルの作成については前回やりましたので、そちらの記事を参照してください。
今回はPhysic Materialを使ってゲームオブジェクト同士が衝突した時の跳ね返り等の設定をしてみます。 Physic Materialを使うと氷の床、ザラザラで物が滑らないような床という風にする事が出来ます。 Physic Materialは ↑のようにゲームオブジェクトに設定したコライダに設定します。 Physic Materialの作成 Physic MaterialはProjectのAssetsフォルダで右クリック→Create→Physic Materialで作成出来ます。 作成したPhysic Materialを選択すると↑のようにインスペクタに表示されます。 Dynamic Frictionは移動中に衝突した時の摩擦で、0は摩擦なし、1は摩擦が最大で働きます。 Static Frictionは動いていない時に衝突した時の摩擦で、値はDynamic Frictionと同じ
今回はRPGゲーム等でよく使われるメッセージ表示機能を作りたいと思います。 誰かと話した時に、その会話の内容を表示する部分です。 大まかな仕様として、表示したい会話の内容を一定秒数後に一文字づつ表示していく。 全部の会話文字列の間に分割する文字列を入れておき、1回で表示するメッセージを指定出来るようにする。 また、文字を表示している間にマウスクリックをしたら、1回で表示出来る文字数分を一気に表示するクイック表示機能をつける。 表示したい会話の内容がなくなった場合、マウスクリックでメッセージ画面ごと消す。 こんな感じの仕様にします。 2019/07/02に全面的に機能を簡略化し、より使いやすくしました。 メッセージ表示用のUIを作成まずはメッセージを表示する場所を作成します。 ヒエラルキーにCreateからUI→Canvasを作り、名前をMessageUIとします。 MessageUIの子要
今回はUnityのゲームにゲーム画面のスクリーンショットを撮る機能を作成していきます。 ゲームユーザーが自身のブログやツイッターにゲームのスクリーンショットを載せたい時にあらかじめゲーム内でその機能が搭載されていると便利ですよね。 そんなわけでゲーム内にスクリーンショット機能を搭載し、ファイルに保存できるようにしていきます。 今回の機能を搭載すると ↑のような感じでボタンを押すとスクリーンショット画像が指定したフォルダに保存されるようになります。 今回はボタンを押すとスクリーンショットを撮るようにしていますが、キーボードを押した時や特定のタイミング(StartやUpdateメソッドで処理を記述して)で自由にスクリーンショットを撮ることが出来ます。
CineMachineは追加でアセットをダウンロードする必要があります。 UnityでCtrl+9キーを押してAsset Storeを開いたらCineMachineで検索するとすぐ出てきます。 CineMachineのインポートが終わるとUnityのメニュー項目にCinemachineメニューが追加されます。 ↑のようにいくつかの項目があります。 Aboutを選択するとCineMachineのマニュアルページを開きます(細かい情報はそちらを参照してください)。 基本はVirtual Camera(仮想カメラ)でそれ以外はそれを拡張した感じですね。 TimelineにはCinemachine Trackを追加出来るようになります。 その為、通常のゲームのカメラの挙動だけでなくTimelineを使った時のカメラの挙動も作成する事が出来ます。 CineMachineの概要CineMachineは
今回はUnity2017.1から導入されたTimelineの機能を使ってみたいと思います。 このTimelineはキャラクターの動きや他のゲームオブジェクトの動き、音声の再生、と言った複数のゲームオブジェクトをタイムライン上で管理することが出来ます。 映画シーンやゲームでのイベントシーンの動き等を作成する時に便利かもしれませんね。 またタイムラインの終了の検知も出来ますので、通常のゲームシーン→イベントシーン→ゲームシーンといったシームレスなイベントの遷移も作成出来そうです。 既存のAnimation機能と似ていますが、Animationの場合は一つのゲームオブジェクトのアニメーションクリップを作成するのに対してタイムラインは複数のオブジェクトのタイミングを管理出来ます。 そこら辺の違いは記事の最後に記載しているUnityマニュアルのタイムラインの項目を見ると詳しく載っています。 Time
サンプル作りアニメーションクリップのプロパティを操作する前に確認する為のサンプルを作成します。 人型3Dモデルをヒエラルキー上に配置したら、AnimatorにAnimatorControllerを設定します。 比較の為、人型モデルを二人並べてAnimatorControllerを別々に作成しそれぞれ別のアニメーションを設定します。 ↑のように二人のキャラクターをヒエラルキー上に設置します。 名前を変更しAnimationClipのプロパティを変更しないキャラと変更するキャラを作ります。 確認の為に↑のように横に並べて比較しやすいようにしておきます。 サンプルではジャンプのアニメーションを使用しますが、これはAssetStoreでRaw Mocap Data for Mecanimで検索して出てくるアニメーションのJumpを使用します。 NormalCharacterに設定するAnimato
Unityのスクリプトの中で他のゲームオブジェクトの取得、自分自身または他のゲームオブジェクトに設定されているコンポーネント(構成要素)を取得し操作したい事があります。 ゲームオブジェクトに設定するスクリプトもコンポーネントとして扱われるので、他のゲームオブジェクトに設定されたスクリプトに何らかの処理をしてもらいたい時にはコンポーネントの取得をする必要があります。 今まではゲームオブジェクト、コンポーネントの取得に関して掘り下げて説明はしていなかったので、何となく使っていた方もいるかもしれません。 まずはゲームオブジェクトの取得方法を見ていきます。 ゲームオブジェクト取得のテストの準備ゲームオブジェクトの取得は基本的にStartメソッド内で取得し、それをフィールドや変数に入れておきます。使用する時はそのフィールドや変数を介して実行します。 これは使う時に毎回ゲームオブジェクトの取得をしてい
今回はUnity2018から標準搭載されるProBuilderを使ってみようと思います。 このProBuilderは以前から有料ツールとしてあったみたいですが(わたくしは知りませんでしたが)、Unity2018から標準で搭載されるようです。 このProBuilderを使うとUnity内で3DCGを作成する事が出来ます。 今までは他の3DCG作成ソフトで作った3DCGを取り込んで使用したり、Unity標準の図形を組み合わせたりしてゲームのステージを作っていましたが、Unity内だけでゲームステージを作ることが出来ます。 しかもUnity内で作成したこのゲームステージはWaveFront形式(OBJ形式)等でファイル出力出来るので他の3DCGソフトでも取り込むことが出来ます。 ProBuilderは3DCG作成ソフトと同じような感じで作成していきますので、覚えることも多いですがちょっとしたおも
ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。これからゲーム作りを始めたい人にはいいかも?
今回はUnityで当たり前のように使っているUpdateメソッド、FixedUpdateメソッド、LateUpdateメソッドについてみていこうと思います。 これらのメソッドはMonoBehaviourクラスを継承して作成したクラスで呼ばれるようになります。 UnityでC#のファイルを作成した時にデフォルトでMonoBehaviourクラスを継承して新しいクラスが作成されていると思います。 例えばC#でTestClassというファイルを作成したら using UnityEngine; using System.Collections; public class TestClass : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame voi
blenderで服を出力Blenderで服を作成しそれをUnityに取り込む時の設定等について見ていきます。 既にUnityに問題なく服のモデルを取り込みテクスチャの設定がされている場合は必要ないので『取り込んだ服のモデルをキャラクターに着せる』の項目まで飛ばしてください。 blenderで服を出力していきます。 blenderで服だけを選択し、UVWrapを表示します。 UVWrapの表示方法等は先ほどのMakeClothesを使った服の作り方の記事の中で触れているので参照してください。 すでにテクスチャを服に設定しているので、 UVWrapの画面の中を右クリックしてアクティブにし、Aキーを押して展開されたMeshを全選択します。 Sキーを押すとサイズの変更が出来るのでマウスを動かしてサイズを調整し、服に設定したテクスチャが好みになるように調整します。 調整が終了したら右クリックを押して
ゲームを作りたいけれどプログラミング、3DCG作成等何もやったことがないし、 ゲームを作りたいけれど何をどうすれば作れるようになるのかわからないという方の為に、ゲームを作る時に何が必要なのかを書いていきたいと思います。 基本的にはUnity(ゲームを作るツール)で3Dゲームを作成するという事で話が進みますが、他のツールや2Dゲームを作る時でも参考になると思います。 なぜこのような記事を書こうと思ったかと言いますと、自分自身が3Dゲームを作ろう、Unityを使おう、と思った時に何が必要なのか?Unityでは何が出来るのか?がわからなかったからです。 あらかじめ言っておきますが、わたくし個人の見解であり、専門家が見るとそれ違うじゃん!という事もあると思います。 ゲーム作りに必要な物ゲームを開発する上で必要になるものを挙げていきましょう。 ゲーム開発ツールゲームを作る時に必要なものは、まずゲーム
レンダーテクスチャをカメラに設定しレーダーカメラを作るまずはProjectタブのAssetsフォルダ内で右クリック→Create→Render Textureを選択しレンダーテクスチャを作成し名前をRadarとします。 ヒエラルキー上で右クリック→Cameraを選択しRenderTextureを設定するカメラを作成し、名前をRadarCamera(RenderTexture)とします。 カメラはゲームステージ上方からキャラクターを写すような位置に移動と向きを調整します。 また右クリック→UI→Canvasを選択し名前をRenderTextureCanvas、Canvasの子要素に右クリック→UI→RawImageを選択します。 ヒエラルキーは↑のようになります。 カメラにRenderTexutureを設定し描画範囲をテクスチャに設定カメラの描画範囲をRenderTextureに設定する為、
前回までに作った「masasi」君を使おうと思ってた方は、やり直しから始まります。ごめんなさい。 まずは「masasi」君の原形Army01のプレハブを選択してください。 上画面のように、インスペクタ上でRigを選択しAnimation TypeをHumanoidに変更します。 Humanoidに変更すると、他の人型キャラクターで使用していたアニメーションを、このキャラクターでも使用する事が出来ます。 その為、アニメーションだけ別に作成しておけばAnimation TypeがHumanoidのキャラクターに他の人型キャラクター用に作成したアニメーションを適用出来ます(リターゲット機能)。 「masasi」君の再設置が終わったら、CharacterControllerの取り付けとスクリプトMoveを設定しパラメータを入れておきます。 さて、ここまでが前回までにやるべきだった事への修正で、これ
UnityのAnimatorはスクリプトから色々な情報を取得する事が出来ます。 今回はスクリプトからAnimatorの現在の状態を取得してアクションを起こせるようにします。 具体的にはマウスの左ボタンを押した時にキャラクターが剣を振るようにした時、剣を振っている間は次の攻撃の反応をさせないようにします。 剣を振っている間もマウスの左ボタンを押してアニメーションパラメータの条件をオンにしてしまうと、1度剣を振った後に移動させようと思ったらもう一度剣を振ってしまうということが起きてしまいます。 コンボのような攻撃を繋げる場合はいいですが一振りだけのアクションだけの場合は連続で攻撃ボタンが反応してしまうのは困ります。 そうならないようにAnimatorの遷移状態を確認して攻撃のアニメーションが終了してから次の攻撃ボタンの受付が出来るようにしましょう。 アニメーターの状態を確認するだけならサンプル
の記事で音声の鳴らし方についてやりましたのでそちらを参考にAudio Sourceを設定してください。 BGMを設定するゲームオブジェクトを作成しAudio Sourceを取りつけます。 BGMはMainCameraに設定でいいかもしれません。 もちろんAudio Sourceを設定するゲームオブジェクトはご自分の環境に合わせて設定してかまいません。 むしろわたくしと同じ設定をする必要はまったくありません(^^)/ UnityのメニューのWindowからAudioMixerを選択します。 AudioMixerのグループの作成次にBGMとSEの音声グループを分ける為に新しいグループを作成します。 ↑の赤い部分をクリックし新しいグループを2つ作ります。 名前をBGMとSEとしておきます。 階層は必ずMasterの下になります。 BGMとSEは同階層にしたいのでSEがBGMの子になっている場合は
今回はUnityのTransformのワールド空間とローカル空間の違いについて見ていきたいと思います。 UnityのゲームオブジェクトはインスペクタのTransformでPosition、Rotation、Scaleの値を見る事が出来ます。 Unityを使い始めの頃はPositionで言うと(0, 0, 0)を基準点とした数値だと思っていました。 しかしゲームオブジェクトは他のゲームオブジェクトの子要素として配置する事が出来、子要素のゲームオブジェクトは(0, 0, 0)を基準としたPositionにはなっていません。 子要素のゲームオブジェクトのPositionは親のゲームオブジェクトのPositionからの相対値が表示されています。 そこで今回は親のゲームオブジェクトと子のゲームオブジェクトを使って実験し、違いを確認してみたいと思います。 親と子のTransform情報の確認ヒエラルキ
アニメーションを作成する時に動かすリグにIKの設定をする メインウインドウでリグを右クリックで選択し、Object ModeからPose Modeに切り替えます。 上の画像のように右手のリグの部分、左手の同じ個所、両足首のリグを選択します。 (ひとつずつ処理しますので、同じ処理をそれぞれに加えてください) 選択する箇所は以下のような場所になります。 上の箇所を一つずつ選択し設定を変更していきます。 Tキーを押すと現れる上のタブ部分でRig Main PropertiesのFK/IKの所を右にドラッグし1に変更します。 すると右腕のそれぞれのリグで細かく動かす(肘だったり手首だったり)ようになっていたのがさきほど選択したリグを動かすと右手全体が動くようになります。 Rigifyのレイヤーを全部選択すると↑のように使わないものまで表示されます。 IKでアニメーションを作成する時にFK関連のリグ
今回はUnityでゲームのデータを保存してみたいと思います。 ゲームのプレイデータを保存出来るようにし、同じ状態で再開出来るというのは今や必須の機能ですね。 昔のゲームみたいにパスワードを入力していく機能を実装するのもある意味面白いとは思いますが・・・・(^_^;) Unityでゲームデータを扱うのは難しくありません。
今回はゲームの機能を作成するのではなく、AwakeとStartの違いと現状のプログラミングの仕方の問題点を見ていきます。 通常のクラスはMonoBehaviourを継承してクラスを作成していますが、MonoBehaviourで用意されているメソッドでAwakeとStartというものがあります。 この二つは同じタイミングで実行されるような気がしますが、実は違います。 わたしの場合あまり気にせずすべてStartメソッドで変数の初期化、ゲームオブジェクトの取得を行っていました。 なぜそうしているかと言うと、購入した本の中で他に設定しているゲームオブジェクトを取得する際は、Awakeだと初期化処理がまだ行われておらず取得出来ない可能性があるので、Startメソッド内でやると良いと書いてあったからです。 AwakeとStartの違いをマニュアルで調べるUnityのマニュアルを見てみると、 ・Awak
で詳しく解説されていました。 Flip Horizontallyは動画を左右反対にします。 Flip Verticallyは動画を上下反対にします。 Import Audioにチェックを入れると、トランスコード中にオーディオトラックを取り込みます。 Transcodeにチェックを入れると、それ以下の設定にトランスコードします。 トランスコードは、デジタル信号をアナログ信号に戻さずにエンコードする処理みたいです。 トランスコードは元の動画をなるべく劣化させずエンコードし動画の設定を変える処理ですかね。 詳しい事はわかりません。 これで動画の取り込みが終了しました。 Video Playerコンポーネントの設定を見るさきほど作成したPlaneのインスペクタでAdd ComponentからVideo→Video Playerを選択し取り付けます。 SourceはVideoClipとURLで指定す
次のページ
このページを最初にブックマークしてみませんか?
『Unityを使った3Dゲームの作り方(かめくめ)』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く