Unityに関連する記事です

 この手順では、先ほど作成したバレットのゲームオブジェクトについて、スクリプトを利用して制御(移動、破壊などの処理)できるように処理を実装していきます。

<実装動画>
動画ファイルへのリンク


手順6 −バレットの基本制御の実装−
 9.Bullet スクリプトを作成し、ゲーム実行時にバレットを発射する
10.Bullet スクリプトを修正し、左クリックしたときにバレットを発射し、5秒後にはバレットを破壊する。成功したらバレットをプレファブ化する



 新しい学習内容は、以下の通りです。

<9>
 ・RequireComponent属性
 ・Transform.right 変数
 ・Rigidbody2D.AddForce メソッド

<10>
 ・Header属性
 ・Transform.up 変数
 ・Destroy メソッド
 ・Summary(サマリー)機能
 ・プレファブの作成



9.Bullet スクリプトを作成し、バレットを発射させる。成功したらバレットをプレファブ化する

1.設計


 バレット用のゲームオブジェクトは作成できました。この手順では、バレットのゲームオブジェクトを移動させる方法を考えて実装します。
ゲームオブジェクトを動作させるには、スクリプトを用意して、それを利用することによって制御を行うことが可能になります。

 この手順では、Bullet ゲームオブジェクトを制御するための、スクリプトを書いていきます。
処理を書いたスクリプトはゲームオブジェクトにアタッチすることではじめて起動するようになります。

 このときスクリプト自体が、アタッチするゲームオブジェクトを指定することはありません
ですが多くの場合、スクリプト内の処理には、このスクリプトをアタッチしているゲームオブジェクトを制御する、という内容があるため、
それゆえ、スクリプトのアタッチ先 = スクリプトが動かしたいゲームオブジェクトという構図になっています。

 逆に言えば、スクリプト自体はどのゲームオブジェクトにアタッチしても起動する、ということになりますので、この視野の広さを忘れずに持っているようにしてください。



 バレットは最終的に、プレイヤーが画面をタップした方向に向けて発射(移動)することが目標です。
ですが、最初からその方法を考えて実装するのは難しいのですので、どうすればバレットのゲームオブジェクトを移動させることができるのか、という最も基本的な部分から
1つずつ順番に考えていき、スクリプトに処理を少しずつ書いていきます。



 発射、という言葉を使ってはいますが、ゲーム内の処理としては、ゲームオブジェクトを移動させる、ということと同義です。
このように「日本語」でなぞらえた処理を、どのようなゲームの処理とつなげて考えていくか、ロジックを考えることが大切になります。

 Unity にはゲームオブジェクトを移動させる方法がいくつかありますが、今回は物理演算を利用して、移動の処理を実装する設計をしています。
物理演算を行うためには、ゲームオブジェクトに Rigidbody/Rigidbody2D コンポーネントがアタッチされている必要があります。

 現在の Bullet ゲームオブジェクトには Rigidbody2D コンポーネントがアタッチされていませんので、まずはそれを準備するところから始めます。
スクリプトの持つ機能の1つに、スクリプトをゲームオブジェクトにアタッチした際に、指定したコンポーネントを一緒にアタッチする、というものがあります。
今回はこの機能である RequireComponent 属性を利用して、スクリプトをアタッチするだけで、Rigidbody2D コンポーネントも一緒にアタッチするように設計しましょう。

 まずは最初ですので、ゲームの起動と同時に Bullet ゲームオブジェクトを移動する、という処理を実装しようと思います。


2.Bullet スクリプトを作成し、ゲームの実行と同時にバレットを右方向に発射する処理を記述する


 ゲームの起動と同時に Bullet ゲームオブジェクトを移動する、という文章を、ロジックとして考えて、スクリプトに処理を記述するにはどうすればよいでしょうか。

 こういった場合、1つずつ、文章を分けて、それに対して処理を考えていく手法がよいでしょう。



 最初の「ゲームの起動と同時に」という部分ですが、スクリプトには Start メソッドという、ゲームの実行と同時に1回だけ処理を行うメソッドがあります。
これをそのまま活用すれば「ゲームの起動と同時に」というタイミングについてはクリアできます。



 次の「Bullet ゲームオブジェクトを移動する」という部分ですが、「移動」については、今回は物理演算を利用することを前提に考えています。
そのため移動の処理については、Rigidbody2D コンポーネントの力を借りることになります。

 Rigidbody2D コンポーネントの情報をスクリプトが取得することが出来れば、スクリプトを通じて、Rigidbody2D コンポーネントの扱う情報を利用することが可能になります
スクリプトがコンポーネントの情報を取得するには、GetComponent メソッドを利用することで取得が可能です。

 GetComponent メソッドは、その前にピリオドによる処理がない場合に限り、gameObject 変数の情報を自動的に参照します。
そのため、スクリプト内に GetComponent<取得するコンポーネント名>() とだけ処理を書いた場合、それは、
このスクリプトがアタッチしているゲームオブジェクトの中から対象となるコンポーネントの情報を探して取得する、という命令になります。



 Rigidbody2D コンポーネントの情報を取得すると、インスペクター上に表示されている、Rigidbody2D コンポーネントの情報を扱える他に、
Rigidbody2D クラスという Unity の用意しているメソッドや変数を扱うことも可能になります

 Rigidbody2D クラスには、AddForce メソッドという、引数に指定した方向に速度をつけてゲームオブジェクトを移動させる、という処理がありますので、こちらを利用するようにします。



 スクリプトは、スクリプトファイルを作成して記述を行います。
まずはスクリプト用のフォルダを作成し、その中にスクリプトファイルを作成していきます。

 Project 内の空いている場所で右クリックをしてメニューを開くか、Project ビューの下にあるプラスボタンを押してメニューを開きます。
Create => Folder を選択して、新しいフォルダを作成してください。名前は Scripts にします。

 Scripts フォルダ内で再度右クリックをしてメニューを開き、Create => C# Script を選択して、新しいスクリプトファイルを作成します。
名前を Bullet に変更して、ダブルクリックをし、Visual Studio エディターを立ち上げて編集をしていきます。


Bullet.cs

 <= クリックしたら開きます



 スクリプトを記述したらセーブを行います。Visual Studio では、ctrl + shift + s キーでセーブができます

 次の手順に移る前に、スクリプトに記述した処理について順番にまとめて説明します。


3.<RequireComponent属性>


 [] で書かれた情報は属性(Attribute)と呼ばれるものです。
属性を付与する事で他の変数と区別したり、特別な挙動を設定することが出来ます。

[RequireComponent(typeof(Rigidbody2D))]
public class Bullet : MonoBehaviour {

 このRequireComponent(リクワイア・コンポーネント)属性は、クラス名の1行上に記述する属性です。

 この属性の(引数)で指定したクラスやコンポーネントが、このスクリプトがアタッチされているゲームオブジェクトにアタッチされていないと、Console ビューにエラーが出るようになります。 

 またこの属性が定義されているスクリプトをゲームオブジェクトにアタッチすると、引数で指定しているコンポーネントが自動的にアタッチされます。(今回は Rigidbody2D コンポーネント)
つまりこの機能は、スクリプトを正常に動作させるために必要なコンポーネントを強制的に用意してくれる内容になっています。
 
 今回この Bullet スクリプトを動作させるには Rigidbody2D コンポーネントが必要になります。
[RequireComponent(typeof(Rigidbody2D))]属性を追加することによって、自動的にコンポーネントのアタッチを行うとともに、アタッチされていない場合にはエラーが出るようにしています。


参考サイト
Unity公式スクリプトリファレンス
RequireComponent
https://docs.unity3d.com/ja/current/ScriptReferenc...
Qiita JunShimura様
[Unity初心者Tips]確実に!必要なComponentを入れるRequire ComponentとReset()
https://qiita.com/JunShimura/items/6576eb63c19c2c9...


4.<Transform.right 変数>


 Transform クラスが管理している変数の1つです。対象のゲームオブジェクトの Transform コンポーネントを参照することにより、
そのゲームオブジェクトの右方向(X軸、Sceneビューの赤い軸)を取得することが出来ます。

 right 変数には Vector3 型の値で、(1, 0, 0) という情報が格納されています。

  AddForce(transform.right * 300);

 この引数の中を変数を数字化して記述すると

  AddForce((1, 0, 0) * 300);    =>  AddForce(300, 0, 0);

 このような処理の内容になっています。つまり、X 軸にだけ 300 の値が入っていることが分かります

 変数の処理の場合、その値がどんな内容になっているのか、特に数字の場合には、上記のように一度、実数を書いてみることが大きな学習になります。
処理がわからなくなってきたときには、変数の中身を考えてください

 Debug.Log()メソッドを利用すると Console ビューに変数の値を表示できますので、こちらも充分活用してください。


参考サイト
Unity公式スクリプトリファレンス
Transform.right
https://docs.unity3d.com/jp/current/ScriptReferenc...
ねこじゃらシティ様
【Unity】オブジェクトの向きを取得する
https://nekojara.city/unity-object-direction


5.<Rigidbody2D.AddForce メソッド>


 ゲームオブジェクトに物理的な力を加えるメソッドです。
力を与えることによって、物理演算にのっとってゲームオブジェクトを移動させる処理が行えます。
Rigidbody2D.AddForce (Vector2 force, ForceMode2D mode= ForceMode2D.Force)

  // Rigidbody2D コンポーネントの情報のうち、Rigidbody2D クラスの持つ AddForce メソッドを実行することで移動させる
  GetComponent<Rigidbody2D>().AddForce(transform.right * 300);

 第1引数に、ゲームオブジェクトに与える力の値を設定します。第2引数は力の与え方に対するオプション値です。初期値で Force が設定されています。
Rigidbody2Dの場合には、ForceModeは2種類あります。力の値を変更するとどうなるか、第2引数の設定を変更するとどうなるかなど、
自分で調べて、スクリプトに代入し、違いを確認してみましょう。

 今回の処理の場合、第1引数には、transform.right * 300 の値が設定されています。これは先ほども解説したように、(300, 0, 0) という値になっています。
第2引数の指定はないため、ForceMode は自動的に Force に設定されています。

 つまり計算の結果、AddForce メソッドによって、ゲームオブジェクトが右方向に 300 の力で移動を行う、という処理になります。


参考サイト
Unity公式スクリプトリファレンス
Rigidbody2D.AddForce
https://docs.unity3d.com/ja/current/ScriptReferenc...
Unity公式スクリプトリファレンス
ForceMode2D
https://docs.unity3d.com/ja/current/ScriptReferenc...

SamuraiBlog様
【Unity入門】Rigidbodyで自在に移動!addforceやpositionを極めよう!
https://www.sejuku.net/blog/54896


6.Bullet スクリプトを Bullet ゲームオブジェクトにアタッチする


 作成した Bullet スクリプトを、ヒエラルキーにある Bullet ゲームオブジェクトにドラッグアンドドロップしてアタッチしてください。
また、下記の手順動画のように、Add Component ボタンからアタッチすることも出来ます。


<手順動画 Bullet スクリプトを Bullet ゲームオブジェクトにアタッチする => Rigidbody2D コンポーネントも一緒にアタッチされる>
https://gyazo.com/9b0527b762ccaa6ce98311540b3ef5b2


Bullet ゲームオブジェクト インスペクター画像



 Bullet スクリプトをアタッチすると、RequireComponent 属性の機能により、Bullet ゲームオブジェクトに自動的に Rigidbody2D コンポーネントがアタッチされたと思います。
このように、Unity ではスクリプトの処理の内容をエディターを通じて確認する方法が多く用意されていますので、自分のわかりやすいやり方やコツを、作業しながら覚えていってください

 スクリプトの処理だけではイメージできないものが、実際に視認することで理解できることも多くあると思います。

 それでは次に、Rigidbody2D コンポーネントの設定を行います。


7.Bullet ゲームオブジェクトの Rigidbody2D コンポーネントの設定を行う


 Bullet ゲームオブジェクトに Rigidbody2D コンポーネントがアタッチされましたので、設定を行います。

 GravityScale の値を 1 => 0 に変更します。この値はゲームオブジェクトに与える重力の影響値です。0 の場合、重力の影響を受けなくなります
 
 次に Constraints の設定項目のうち、FreezeRotation の Z にチェックを入れてオンの状態にします。これにより Z 軸方向へのゲームオブジェクトの回転が発生しなくなります
逆にこのチェックが入っていないと、物理演算によって移動する際にゲームオブジェクトが Z軸方向にくるくる回転します。
現在は丸い画像なのでわかりませんが、一定の方向を向いていないと正常に見えない画像を設定した場合、画像がくるくる回転してしまい、不具合の原因になります。

 教材を読んで机上で学習するのみではなく、チェックを外した状態の確認も実際に体験してみてください。自分で体験した分だけ自分の経験値となります


インスペクター画像



 以上で設定は完了です。


8.ゲームを実行して動作を確認する


 準備が整いましたので、ゲームを実行してスクリプトによるゲームオブジェクトの制御が行えているかを確認しましょう。

 ゲーム実行前に、ヒエラルキーにある Bullet ゲームオブジェクトを選択して、インスペクターに情報を表示しておきます。
移動する場合には RectTransfom コンポーネントの Position X の値が 正方向に加算されるはずです。
また、Debug.Log メソッドの処理もありますので、移動させる処理が実行されたあとに、Console に "発射" という文字列が表示されるはずです。

 動作の確認する場合には、どのような処理が行われていれば制御が成功しているのか、それをその都度考えてから実行してください
闇雲にゲームを実行して、動いた処理を見てから判断するのはよくありません。


<実行動画>
動画ファイルへのリンク


Console画像



<制御できていないケース>
動画ファイルへのリンク


 上記の動画のように、もしも移動しているバレットが途中で下方向に落下してしまう場合には、バレットが Rigidbody2D コンポーネントの重力の影響を受けてしまっています
Rigidbody2D コンポーネントの GravityScale の値が 0 に設定されているか確認してください。

 そもそも移動しない場合には、Bullet ゲームオブジェクトに Bullet スクリプトがアタッチされているかを確認します。

 エラーの状態をみて、原因がどこにあるか、1つずつ順番に確認していくことで問題を特定することが出来ます。

 正常に制御されていることが確認できましたら、次のステップに進みます。


10.Bullet スクリプトを修正し、左クリックしたときにバレットを発射し、5秒後にはバレットを破壊する。成功したらバレットをプレファブ化する

1.設計


 次はプレイヤーの実際の行動に対して、ゲーム内の処理を反映できるように修正をしていきます。

 今回の実装目的は「ゲーム画面を左クリックした際に」「バレットを上方向に発射する」「発射して5秒後にはバレットを破壊する」です。
また1つずつ、処理を分けて考えていきましょう。

 現在は Start メソッド内にバレットの移動処理がありますが、この処理では「マウスの左クリックした際に」という条件は満たせません。
ですが、この移動の処理自体はそのまま利用できる内容です。こういった場合、新しくメソッドを1つ作成し、そのメソッド内に移動の処理を記述します

 メソッドの名前は任意ですが、メソッド名から内容がイメージできるものが理想です。
今回はわかりやすく、ShotBullet にしましょう。このとき、動詞 + 名詞でメソッド名を付けるようにします
そして、プレイヤーの行動に対して、このメソッドを呼び出す命令の方式に変更します

 今回のプレイヤーの行動とは、「マウスの左クリックした際に」という部分に当たります。
クリックなどのインプット判定の処理は Unity の用意している Input クラスのメソッドと、Update メソッドを組み合わせて利用することで実装を行うことが出来ます。
また Input クラスの持つ GetMouseButton 〜 メソッドは、そのままスマホの画面のタップも感知する命令にもなります

 Uodate メソッドは常に動いている処理ですので、この処理の中で「マウスの左クリック」という状態を監視し、bool 型で判定をするようにします。
マウスの左クリックが行われていない状態を false 、クリックされた状態を true とし、それを条件として、バレットを発射するメソッドを呼び出すようにロジックを組み上げていきます。

 ロジックを考える際のポイントは「はじめに日本語で実装したい内容をスクリプト内にコメントとして書いておく」ことです。
それをなるべく、詳細に記述しておきます。例えば今回の場合であれば、Update メソッドに次のように事前に記述しておきます。

  void Update()
  {
      // マウスの左ボタンをクリックしたら


      // バレットを発射する


   // Debug.Log で動作を確認

  }

 ShotBullet メソッドについても同様です。スクリプト内にメソッドを新しく書く場所は、他のメソッドの中でなければどの場所から書き始めても問題ありません
間違えて、Update メソッド内に ShotBullet メソッドを書かないように気を付けてください。

 private void ShotBullet() {

      // バレットの移動処理


      // Debug.Logでこの処理が実行されているか確認


      // 5秒後にバレットを破壊する


  }

 そしてこれらのコメントを見ながら、プログラムを書いていく手法です。



 今回は移動する方向が右方向ではなく上方向になっていますので、発射する方向が前回とは異なります。
どのようにすれば上方向になるのかを考えてみてください。

 折角ですので、発射速度についても修正を行います。先ほどは 300 という実数でしたが、なるべくプログラムでは変数を利用するようにします。
宣言フィールドにて、新しく変数を宣言して、その変数にバレットの速度という役割を任せるようにします。
このとき、public 修飾子をつけて宣言することで、インスペクター上から変数の値を設定できるようになります。
このようにしておくと、プログラムを変更せずに、バレットの速度を変更できるため便利です。

 5秒後にバレットを破壊する処理も忘れずに記述してください。
Destroy メソッドはすでに学習済のはずですので、どの場所に処理を記述するかが大切になります。


2.Bullet スクリプトを修正し、ゲーム実行時ではなく、マウスの左クリックした際にバレットを上方向に発射するように制御方法を変更する


 以上の設計をふまえて、プログラムを書いていきます。まずは自分なりのプログラムを書いてみてください。


Bullet.cs

 <= クリックしたら開きます


 スクリプトを記述したらセーブを行います。Visual Studio では、ctrl + shift + s キーでセーブができます

 次の手順に移る前に、スクリプトに記述した処理について順番にまとめて説明します。


3.<Header属性>


 Header(ヘッダー)属性は、先ほど学習した RequireComponent 属性と同じ、属性の1つです。
 Header 属性を変数の宣言に追加すると、インスペクター上に( )内に記述した文字が表示されます。

    [Header("バレットの速度")]
    public float bulletSpeed;

あるいは

    [Header("バレットの速度")] public float bulletSpeed;

 記述の方法はどちらでも構いません。


インスペクター画像(変数名の上に Header 属性で設定した内容が表示されている)



 インスペクター上に表示される変数名だけですとわかりにくい場合がありますが、日本語でコメントを付けることができるため、変数の内容がわかりやすくなります。
今後も特に教材内に記載がなくても、自分で判断をして、必要に応じてこの Header 属性を使いこなしましょう


参考サイト
エクスプラボ 様
【Unity】HeaderAttributeを使ってフィールドを整理してみなイカ?
https://ekulabo.com/attribute-header


4.<Transform.up 変数>


 Transform クラスが管理している変数の1つです。対象のゲームオブジェクトの Transform コンポーネントを参照することにより、
そのゲームオブジェクトの上方向(Y軸、Sceneビューの緑の軸)を取得することが出来ます。

 up 変数には Vector3 型の値で、(0, 1, 0) という情報が格納されています。

 GetComponent<Rigidbody2D>().AddForce(transform.up * bulletSpeed);

 上記の処理内の変数を実数に読み替えて、実際にどのような計算処理になっているか、どの方向に対して移動を行うようになるのかを考えてみてください。


参考サイト
Unity公式スクリプトリファレンス
Transform.up
https://docs.unity3d.com/jp/current/ScriptReferenc...
ねこじゃらシティ様
【Unity】オブジェクトの向きを取得する
https://nekojara.city/unity-object-direction


5.<Destroy メソッド>


 Destroy メソッドの第1引数に指定したゲームオブジェクトを破壊することが出来ます。
 第2引数には、float 型で破壊するまで遅延する秒数の指定が可能です。遅延する秒数の指定がある場合には、その秒数経過後に破壊されます。
秒数の指定がない、第1引数での指定の場合には、即座に破壊されます。

  // 5秒後にこのスクリプトがアタッチされているゲームオブジェクト(つまり、バレット)を破壊する
  Destroy(gameObject, 5f);

 今回の場合、第1引数には gameObject 変数が指定されていますので、このスクリプトがアタッチされているゲームオブジェクトを指定しています。この場合、バレットになります。
第2引数にも秒数の指定がありますので、このゲームオブジェクトは、Destroy メソッドが実行されてから 5秒後に破壊されます。


参考サイト
Unity公式スクリプトリファレンス
Object.Destroy
https://docs.unity3d.com/ja/current/ScriptReferenc...
Unity公式マニュアル
ゲームオブジェクトの作成および削除
https://docs.unity3d.com/ja/2019.4/Manual/CreateDe...


6.<Summary(サマリー)機能>


 関数(メソッド)やクラスを作成し終わりましたら、必ずその関数やクラスの説明を書くように心がけましょう。書く場所は関数名、あるいはクラス名の1行上の部分です。
半角スラッシュを3個連続で記述すると説明用のコメントであるサマリー(概要)が自動的に記述されます。

 別の記事で詳しく解説していますので、そちらを確認しておいてください。


 => 知っておきたい豆知識


7.Bullet ゲームオブジェクトのインスペクターを確認し、設定を行う


 スクリプトに変更がありましたので、Bullet ゲームオブジェクトのインスペクターを確認します。
public 修飾子で宣言した情報が、Header情報つきでインスペクターに追加されています。


Bullet ゲームオブジェクト インスペクター画像



 BulletSpeed の値を先ほどと同じで 300 に設定してください。この値は自由に変更し、調整してみてください。


Bullet ゲームオブジェクト 設定後のインスペクター画像



 以上で設定は完了です。


8.ゲームを実行して動作を確認する


 すべての手順が終了しましたので、ゲームを実行して動作を確認しましょう。
ゲーム実行時に実行される Start メソッドの処理はコメントアウトしているので、実行されないようになっています。
もしもゲーム実行時にバレットが移動してしまう場合には、Start メソッドを確認してください。

 Update メソッドでは if 文によって、条件式を満たした場合にのみ、ShotBullet メソッドが実行されるように制御を行っています。
条件は左クリックしたとき、ですので、ゲーム実行中であっても、左クリックするまでは、if 文の条件式は満たされることはありませんので
バレットは移動しない状態になっているはずです。

 Gameビュー にマウスカーソルを移動し、どこでもよいので左クリックしてみてください。
それに合わせて、バレットが移動を行えば制御成功です。

 if 文の中に用意した Debug のメッセージと ShotBullet メソッドの中の Debug のメッセージの両方が Console ビューに表示されます。
これにより、今回の処理は、正常にこの Debug の部分を通過して処理されたことが分かります。


<実行動画>
動画ファイルへのリンク


Console ビュー



 以上でバレットのスクリプトは一旦完成です。最後に Bullet ゲームオブジェクトをプレファブにして終了です。


9.<プレファブの作成>


 挙動に問題がなければ、今後、バレットのゲームオブジェクトをスクリプトから生成させることも念頭に入れて
Bullet ゲームオブジェクトをプレファブにしておきます

 Project 内で右クリックをしてメニューを開き、Create => Folder を選択し、名前を Prefabs に変更します。
この Prefabs フォルダに Bullet ゲームオブジェクトをドラッグアンドドロップしてプレファブにします。
プレファブにすると、ヒエラルキーにある Bullet ゲームオブジェクトがクローンになるため、アイコンと名前が青い色で表示されるようになります。


ヒエラルキー画像



Prefabs/Bullet




 無事にプレファブになったら、ヒエラルキーにある Bullet ゲームオブジェクトは削除してください
Bullet ゲームオブジェクトを選択して右クリックをしてメニューを表示し、Delete を選択するか、キーボードの Delete ボタンを押すことで削除できます。

 その後、Prefabs フォルダ内の プレファブになった Bullet ゲームオブジェクトを選択して、インスペクターの一番上にある Opne Prefab ボタンを押してプレファブ編集モードにします


インスペクター画像



 Transform の Position の値をすべて (0, 0, 0)にしておいてください。
このとき、Transform コンポーネントの Reset をかけると、設定してある Scale の値も 1 に戻ってしまうため、Position の値だけを 0 にしてください


Bullet ゲームオブジェクト プレファブにした際のインスペクター画像



 この Bullet ゲームオブジェクトはCanvas 下で作成しているため、編集モードないのヒエラルキーは Canvas の子として表示されていますが、実際には1つの独立したゲームオブジェクトです。
RectTransfom コンポーネントを持つゲームオブジェクトをプレファブにした場合には、Canvas ありきで利用するため、このように表示されます。
実際にこのプレファブのゲームオブジェクトをヒエラルキーにドラッグアンドドロップして設置してみると分かりますが、Canvas ゲームオブジェクトが一緒に生成されることはありません。


Bullet ゲームオブジェクト 編集モード画像



 以上でこの手順は終了です。

 次は 手順7 −スクリプト同士の繋がりを実装− です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます