メディア
鬯ッ�ッ�ス�ゥ髯晢スキ�ス�「�ス�ス�ス�ス�ス�ス�ス�「鬯ョ�ォ�ス�エ鬮ョ諛カ�ス�」�ス�ス�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ュ鬯ッ�ゥ隰ウ�セ�ス�ス�ス�オ�ス�ス�ス�ス�ス�ス�ス�コ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ケ鬯ョ�ォ�ス�エ髯キ�ソ鬮「ツ€�ス�セ隴会スヲ�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�」�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ケ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス鬯ッ�ッ�ス�ゥ髯晢スキ�ス�「�ス�ス�ス�ス�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ク

Unity実用Tips――衝突判定とCollider、複数Tagの使い方ゲーム開発初心者のためのUnity入門(13)(3/4 ページ)

» 2017年02月20日 05時00分 公開
[薬師寺国安PROJECT KySS]

Particleとカメラの設定などを行い、いったん実行

 次に、これは今回の内容に大きく影響しないが、飾りとして、FlareのParticleとPlaneにTextureを設定しておいた。ここは読み飛ばしてもらっても構わない

 Unityメニューの「Assets」→「Import Package」→「ParicleSystems」で、「ParticleSystems」をインポートする。するとProject内に「ParticleSystems」のフォルダが作成される(図17)。

図17 ParticleSystemsのフォルダが作成された

 次に、Projectの「Assets」→「Standard Assets」→「ParticleSystems」→「Prefabs」内にあるFlare.prefabをScene画面上に配置するのだが、床であるPlaneが白ではFlareが分かりにくいので、「Assets」→「Locomotion Setup」→「Textures」内の「tileCobcreteFlooring_var01_DFF.psd」をPlane上にドラッグ&ドロップしておく。

 図17から「Assets」→「Standard Assets」→「OarticleSystems」→「Orefabs」のフォルダ内にある「FireWorks」を3個、SceneのPlane上にドラッグ&ドロップする。モンスターの手前で花火が上がるよう移動ツールで調整する(図18)。

図18 床(Plane)にTextureを適用し、「ParticleSystems」の「FireWorks」を3個配置した

 最後に、「Main Camera」がUnityマンに追従するようにする。「Main Camera」を選択した状態からInspectorの「Add Component」をクリックし、「Camera-Control」→「Smooth Follow」と選択する。「Target」に「UnityMask」を指定し、「Distance」に「5」、「Height」に「4」と指定してみた。少し上からの目線になる。

 以上で各種設定は完了だ。実行すると動画1のように表示される。

動画1 Unityマンにカメラを追従させる

 ここからはスクリプトを書いていく。

Unityマンが「Border」を通過したかどうかを判定するスクリプト

 まず、Hierarchyから「Border」を選択し、Inspector内の「Add Component」から「New Script」を選択する。「Name」に「BorderScript」と指定し、「Language」に「C Sharp」を指定して「Create and Add」をクリックする。

 Inspector内に追加された「BorderScript」をダブルクリックするとVisual Studioのエディタが起動するので、リスト1のコードを記述する。

  1. public static bool flag;
  2. void Start () {
  3. flag = false;
  4. }
  5. void OnTriggerEnter(Collider col)
  6. {
  7. if(col.tag=="Player")
  8. {
  9. flag = true;
  10. }
  11. }
リスト1 Unityマン「Border」を通過したかどうかを判定する処理(BorderScript.cs)

 まず、publicな静的(static)変数でbool型の「flag」を宣言する(1行目)。静的変数は、他のスクリプトからも参照が可能だ。静的変数は、そのブロックが終了しても変数値が保持される。「flag」は他のスクリプトからも利用されるので「public」で宣言しておく。

 静的変数「flag」を「false」で初期化しておく(3行目)

ゲームオブジェクト接触時の「OnTriggerEnter」関数

 ゲームオブジェクトが、他のゲームオブジェクトと接触した場合に発生する「OnTriggerEnter」関数(6行目)に、ゲームオブジェクトが他のゲームオブジェクトに接触した際の処理を記述する。

 引数に接触情報を持つ「col」を指定し、8~11行目で、「col」の「tag」が「Player」であった場合は、「flag」の値を「true」で初期化する。「Player」とは、図16で設定した「UnityMask」のタグ名だ。よって、「UnityMask」が「Border」に接触した瞬間、静的変数「flag」の値が「true」になる。

JavaScriptのコード

 JavaScriptのコードも記載しておく、コードの解説はC#と同じだ。JavaScriptで書きたい場合は、連載第5回のコラム「スクリプトエディタの切り替え」を参照されたい。

  1. static var flag:boolean;
  2. function Start () {
  3. flag=false;
  4. }
  5. function OnTriggerEnter(col:Collider)
  6. {
  7. if(col.tag=="Player")
  8. {
  9. flag=true;
  10. }
  11. }
Unityマン「Border」を通過したかどうかを判定する処理(BorderScriptJS.js)

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

HTML5�ス�ス�ス�ス�ス�ス�ス�ス鬮ッ蜿・�ケ�「�ス�ス�ス�スX 鬯ッ�ョ�ス�ォ�ス�ス�ス�ェ鬮ッ蛹コ�サ繧托スス�ソ�ス�ス�ス�ス�ス�ス�ス�ス�ス�コ鬮」蛹�スス�オ髫エ竏オ�コ�キ�ス�ク�ス�キ�ス�ス�ス�ケ髫エ雜」�ス�「�ス�ス�ス�ス�ス�ス�ス�ウ鬯ゥ蟷「�ス�「�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ュ鬯ゥ蟷「�ス�「髫エ雜」�ス�「�ス�ス�ス�ス�ス�ス�ス�ウ鬯ゥ蟷「�ス�「�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ー

鬯ョ�ォ�ス�エ髯晢スキ�ス�「�ス�ス�ス�ス�ス�ス�ス�ャ鬯ョ�ォ�ス�エ鬯イ�ス�シ螟イ�ス�ス�ス�ス�ス�ス�ス�・鬯ョ�ォ�ス�エ髯晢スカ�ス�キ�ス�ス�ス�」�ス�ス�ス�ッ鬮」蜴�スス�ォ�ス�ス�ス�」

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。