Minimapを作りたいのですが、Unityってやっぱり基本的な文献は日本語のもので事足りるのですが、ちょっとこ洒落たことをしようとすると全然日本語の文献がないのです。
しかもいろんなものを調べて自分の腹に落として書かないと自分の環境に適しているものができません。
という愚痴を言わせてもらって肝心のMiniMapの作り方です。結構難しいです。
①以下を参考に簡易minimapを作成します。
参考:http://d.hatena.ne.jp/d-kami/20111105/1320445828
でもこれだけだと上からキャラクターを見ているだけで全体像が見れるわけではないのです。
敵が増えたら3Dでどこにできたかを把握しておきたいのです。
で、参考にしたのは以下のQA。。。でも英語なんだよね。
http://answers.unity3d.com/questions/63302/how-can-i-set-an-icon-to-my-character-and-to-all-t.html
訳します↓
QuestionTitle:ミニマップ上にどうやって自分のキャラクターと敵をアイコンで表示するだ!?
QutestionContents:ミニマップは作ったのですが、キャラクターしか見えないのです。
でもホントにやりたいことはcall of dutyみたいにキャラをアイコンとして見せたいのです。
回答は2つありましたが、わかりやすい方を訳しました。興味ある人は先ほどのURLで原文をたどってみてください。
empty gameobjectを作り、haloコンポーネントをそのgameojbectの中に入れます。
(このhaloでかなり悩みました。なんだこれ?と。。。結論を言うとAdd componentからHaloというコンポーネントをチェックです。)
haloの色を決めましょう(私は青色を主人公に、赤を敵にしました)
gameobjectをminimap用のカメラの親にします。
レイヤーを作ります (このレイヤーをminimap onlyって呼ぶことにします)
player用のカメラに先ほど作ったレイヤーをあてはめます。
minimap onlyレイヤーがほかの何にも選択されていないことは確認しておくべしです
(カメラコンポーネントだけです。transform系のものに当てはまってないことを確認です)
minimap onlyレイヤーがminimapカメラにだけ選択されていることを確認してください
(メインで使っているカメラコンポーネントに使っていないことが重要です)
ちょっと自分は改造して上記同様にするのはやめて、Cubu型のオブジェクトアイコンでPlayerと敵を見分ける方法をとりました。
まずはLayerをPlayerとPlayerを入れるアイコン(Cubuオブジェクト)で分けます。
こうすると結局はPlayer自身もLayerを分かれてしまうため、Defaultで表示するときに注意が必要です。
MinimapOnlyのカメラにはPlayerは入れません。代わりにPlayerアイコンを入れます。
一方でMainのカメラにはPlayerアイコンは入れません。
こうすることによってMinimapカメラにはPlayerが表示されない代わりにアイコンが表示されます。ただし、アイコンには以下の追従スクリプトが必要です。
具体的な設定はCulling Maskで必要なレイヤーを選択します。
なお、図ではPlayer=soldierです。わかりやすいように以下はPlayerに変更しておきました↓
using UnityEngine;
using System.Collections;
public class FollowObj : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
GameObject soldpos = GameObject.Find("Player"); //Playerはアイコンを映したいキャラクターを設定する
this.transform.position = soldpos.transform.position;
}
}
こんな仕組みで行けました。
