「Unity」カテゴリーアーカイブ

メモ3年用

メモいろいろ

・窓ポリゴンモデルについて

Unityインポート時に三角分割できない可能性がありますので,スナップショット保存後はUVをいじらないようにして(つまりこの時点で必ず保存をして)窓周りのポリゴンを選択し,三角化してください.Unity側で三角化できない場合,透明ポリゴンになってしまうようです

・NormalMapについて

後回しにします.時間があればやるということで優先順位を下げます

・でも瓦のノーマルマップは欲しい

瓦のノーマルマップは欲しいです.グレースケールでグラデーションつけておけば,Unity側でNormlMapに変更できるようなので,それでいきましょう

・ScaleFactorについて

ScaleFactorの値を知らせてください(ファイル名についてる?)

ゴール後に前を向く

ゴール後に前を向く場合は,以下の構造でスクリプトが必要

なお,ゴール前に前を向かせるのは金ちゃん走りになるので,上半身のボーンにマスクを書け,別の制御にする必要があると思う

using UnityEngine;
using System.Collections;

public class heading : MonoBehaviour {

	//initialize variable of  nav mesh
	//initialize variable of bool

	//default heading



	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {

		//get navmesh info every frame
		//if  goal this nave mesh
		//then heding call
	
	}



	//new function heading call
	//if custom heading
	//heading to custom vector
	//else no custom heading
	//heading to default vector




}

 

 

A*関係,複数キャラクタを複数のポイントに向かわせる

作成中

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityStandardAssets.Characters.ThirdPerson;

public class myscript : MonoBehaviour {
	
	public GameObject myInstance;//for prefab
	public GameObject myGoal;//for goal object
	public int sakusei = 10;//chara duplicate count
	public GameObject targetbj;//GameObject of chara target
	Transform targetPos;//位置情報用の変数
	GameObject NavObj;//NavMeshのついているGameObject
	NavMeshAgent myNav;//NavMeshAgent入れ用

	List<Vector3> myPoint = new List<Vector3>();//ゴール地点リスト用

	// Use this for initialization
	void Start () {
		myPoint = new List<Vector3>();//リスト初期化
		myPoint.Add (new Vector3 (0.0f, 0.5f, -5.0f));//リスト項目追加   
		myPoint.Add (new Vector3 (-20f, 0.5f, 14f));
		myPoint.Add (new Vector3 (20f, 0.5f, 14f));

		//ゴール地点3個作成用(テスト)
		GameObject goalObj = Instantiate (myGoal, myPoint [0], Quaternion.identity) as GameObject;
		goalObj.name =  "goal1";
		goalObj = Instantiate (myGoal, myPoint [1], Quaternion.identity) as GameObject;
		goalObj.name =  "goal2";
		goalObj = Instantiate (myGoal, myPoint [2], Quaternion.identity) as GameObject;
		goalObj.name =  "goal3";

		//キャラn体作成
		for (int i = 0; i < sakusei; i++) {
			GameObject go = Instantiate (myInstance, new Vector3 (i + 1.0f, 0, 0), Quaternion.identity) as GameObject;
			string myAIname =  "AI" + i.ToString ();
			go.name = myAIname;
			int divideInt = i % 3;
			if (divideInt == 0) {
				GameObject my1 = GameObject.Find("goal1");
				targetPos = my1.GetComponent<Transform> ();
	
			}else if (divideInt == 1) {
				GameObject my2 = GameObject.Find("goal2");
				targetPos = my2.GetComponent<Transform> ();
			}else if (divideInt == 2) {
				GameObject my3 = GameObject.Find("goal3");
				targetPos = my3.GetComponent<Transform> ();
			}

		myNav = NavObj.GetComponent<NavMeshAgent> ();//Get Nav mesh from current object

			myNav.SetDestination (targetPos.position);//set goal pos of myNav
			myNav.stoppingDistance = 3.0f;//offset distance from goal point...korenaito guriguri suru
			AICharacterControl  myTar  = NavObj.GetComponent<AICharacterControl>();//find component of NabObj
			myTar.target = targetPos;//set Goal variable

		}
	}
	
	// tsukotenai
	void Update () {
	
	}
}

VR Hanami

時間がないのでAsset使いまくり

以前自作したS3Dカメラリグが見つからなかったので、フリーLCVRkitを利用したけどもっと便利そうなのがあった

参考にしたサイト

http://qiita.com/yanosen_jp/items/b9fdd31928960995f7ea

https://developers.google.com/vr/unity/download

 

ちな、OpenCVは重い。Vuforiaは軽いけど、マーカーは簡単なものでは認識しない。

想定される現場は暗いので、CVもVuoriaもダメ。

単にサクラ置くだけっていうなんでもないものになる。

カメラが起動しない、、

Camera Usage Descriptionに日本語でいいので何かいれとく

http://qiita.com/JunSuzukiJapan/items/e7c04072ac5e83fa6595

 

SeriesをSetActive Falseにする

表題の件,

最後の1こがどうしてもデータに残るので,対処療法でとりあえずFalseにするのをTagでやる.

Tagの追加はAddSeriesのときにやってる

		///test
		GameObject[] pairSer = GameObject.FindGameObjectsWithTag ("pairGra");//Sseriesの位置を絶対パスで指定
		foreach(GameObject setObj in pairSer){
		Debug.Log ("set false_" + setObj.name);
		setObj.SetActive (false);//検索したSeriesのオブジェクトを表示/非表示させる
		}

 

非アクティブ(inActive)オブジェクトのFind

GameobjectFindではなく,TransformFindを使うべし

		SeriesParent = GameObject.Find ("Canvas/mainGraph/RadarGraph/Series");//Sseriesの位置を絶対パスで指定

		setObj = SeriesParent.transform.Find ("my" + this.name).gameObject;//Transformでないとfalseのオブジェクトをfindできない
		//Debug.Log (setObj.name);
		setObj.SetActive (false);//検索したSeriesのオブジェクトを表示/非表示させる

 

グラフ用スクリプト

バックアップ用

長すぎ.ライブラリ化しろよ.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using NCMB;
using System;
using MiniJSON;//use miniJSON
using UnityEngine.UI;//use unity gui
using userManager;//入所日数など
using System.Globalization;//hex color用

//radar graph show script

public class suGraph : MonoBehaviour {

	public GameObject myGraphPrefab;

	public WMG_Radar_Graph graph;
	public WMG_Series series1;
	WMG_Series[] seriesArr;//seriesの複数作成用 
	WMG_Series series0;//合格ライン用
	WMG_Series[] seriesPairs;//Pairの複数作成用 

	//詳細グラフ用
	public WMG_Axis_Graph syousaiGraphGO;
	WMG_Series series100;
	WMG_Series series200;
	List<Vector2> syousaiVec;//折れ線グラフ入れる用
	List<Vector2> goukakuVec;//折れ線グラフ入れる用
	List<string> soyousaiDateList;//横X軸データ用


	WMG_Node gragui;
	Dictionary<string, object> _skillPo;//ディクショナリです
	string myUsrName;//検索用のユーザーネーム入れ
	string pairUsrName;//ペアのユーザネーム入れ


	//凡例表示用
	public  RectTransform bonreiParent;
	public RectTransform bonreiPrefab;

	List<string> texColors ;
	List<string>texColors2 ;

	int checkedCount; //実際にチェック済みのカウント数
	int userChecked = 0;

	//Pair表示用
	public  RectTransform pairParent;
	public RectTransform pairPrefab;
	public GameObject noPairObj;

	//ドロップダウン用
	public Dropdown hyoujiDrop;

	//ポイント色用
	WMG_List<Color> myc ;
	WMG_List<Color> myLinec;
	WMG_List<Color> myLinecLocal;
	NCMBUser user;
	WMG_List<Color> mycLocal;

	//グラフの表示件数を増やす
	int graphDispCount;
	public GameObject hyoujiKensuDropGO;

	public GameObject syousaiGraph;//ジャンル別詳細のグラフアサイン用
	public int dlDataCount;//ダウンロードするデータ数

	List<Transform> bonreiGOs = new List<Transform>();

	//ドロップダウンをリセットする用
	public GameObject dropGO;

	//GameObject[] bonreiObjs;//prefabをまとめて消す用(凡例の表示とか)
	int genreID = 0;

	//詳細グラフのタイトル
	string syousaiTitle;
	WMG_List<string> genreList = new WMG_List<string> (){ "食事", "身だしなみ", "衛生管理", "健康管理", "金銭管理", "社会性", "危機管理" };

	List<string> dateListLocal;


	//グラフデータ作成用
	List<List<float>> graData = new List<List<float>>();//多次元リスト?
	List<List<float>> graDatarRev = new List<List<float>>();//詳細グラフ横軸表示用に逆順のを用意する

	//ペアグラフ作成データ
	List<List<float>> graDataPair = new List<List<float>>();//多次元リスト?

	//件数表示用
	public Text kensu;


	// Use this for initialization
	void Start () {
	//my
	graph = myGraphPrefab.GetComponent<WMG_Radar_Graph>();//指定のゲームオブジェクトからgraphを取得
		syousaiGraph.SetActive(false);
		user = NCMBUser.CurrentUser;
		myUsrName = user.UserName;
		soyousaiDateList = new List<string>();

		//グラフクリックテスト用
		graph.WMG_Click += MyCustomFunction;

		colorGenerate ();//色生成
		//レーダーグラフ用最初に30個Series作っておく

		//ペア選択用
		noPairObj.SetActive(true);

		//初期設定
		dlDataCount = 30;//30はグラフマックス値

		seriesArr = new WMG_Series[dlDataCount];//
		for (int i = 0; i < dlDataCount; i++) {
			seriesArr [i] = graph.addSeries ();//グラフにつながり(series)を追加?
		}
		series0 = graph.addSeries ();

		//詳細グラフ用ここでseriesを追加しておくとグラフが二重にならない
		series100 = syousaiGraphGO.addSeries();
		series200 = syousaiGraphGO.addSeries();

		//表示件数ドロップダウン用
		hyoujiKensuDropGO.GetComponent<Dropdown>().value = 0;
		graphDispCount = 5;//グラフ最大表示件数


		//データを取得する関数へ
		//getSkillData ();//SUではここはオフにする
	}


	//グラフクリックテストで飛ばされる先のファンクション
	void MyCustomFunction(WMG_Series series, WMG_Node node) {
		Debug.Log("Node: " + node.name + " on series: " + series.name + " was clicked!");
	}


	// Update is called once per frame
	void Update () {
	
	}

	//冒頭特定色に固定そのうしろはランダムカラー
	void colorGenerate(){
		//
		texColors = new List<string> (){ "blue", "red", "green", "cyan", "magenta", "yellow", "grey" };
		texColors2 = new List<string> (){ "blue", "red", "green", "cyan", "magenta", "yellow", "grey" };
		myc  = new WMG_List<Color>(){Color.blue, Color.red, Color.green, Color.cyan, Color.magenta, Color.yellow, Color.gray};
		myLinec  = new WMG_List<Color>(){new Color(0F, 0F, 1F, 0.7f),new Color (1F, 0F, 0F, 0.7f), new Color (0F, 1F, 0F, 0.7f),new Color (0F, 1F, 1F, 0.7f),new Color (1F, 0F, 1F, 0.7f),new Color (1F, 1F, 0F, 0.7f),new Color (0.7F, 0.7F, 0.7F, 0.7f)};

		//表示件数増に伴うグラフ色数生成
		for (int i = 0; i < 23; i++) {//7+23で30生成
			Color randomColor = new Color(UnityEngine.Random.value, UnityEngine.Random.value, UnityEngine.Random.value);
			myc.Add(randomColor);
			myLinec.Add(randomColor);
			//texcolor用16進数に変換する
			float rcolorf = randomColor.r * 255;
			float gcolorf = randomColor.g * 255;
			float bcolorf = randomColor.b * 255;
			int rcolor = (int)rcolorf;
			int gcolor = (int)gcolorf;
			int bcolor = (int)bcolorf;
			string hex = "#" + rcolor.ToString("X2") + gcolor.ToString("X2") + bcolor.ToString("X2") + "ff";
			texColors.Add (hex);
			texColors2.Add (hex);

		}

	}


	void getSkillData(){
		graData.Clear ();//ダウンロードしたデータを消す
		graDatarRev.Clear ();//ダウンロードしたデータを消す
		colorGenerate();//色リセット

		//グラフを取得するためにデータを取得
		NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("testobj");
		//query.Limit = graphDispCount;
		query.Limit = dlDataCount;//とりあえず上限30件取得する

		query.OrderByDescending ("createDate");//createDateを降順(最新が先)でソート_ここを入れ替えると全体が変わるかな
		//query.WhereEqualTo ("skillPO", "");
		query.WhereEqualTo ("player", myUsrName);//Playerがusernameの結果を検索
		query.FindAsync ((List<NCMBObject> objList ,NCMBException e) => {
			if (e != null) {
				//検索失敗時の処理
				Debug.Log(e.Message);
			} else {

				if ( objList == null || objList.Count == 0 ){
					//Debug.Log(e.Message);
					Debug.Log("Error");//検索結果がない
					return;
				}
				//S
				int po = 0;//
				int po2 = 0;

				//実際のデータ数をセット
				checkedCount = objList.Count;

				texColors2.Reverse();//ペア表示用に逆にする(色かぶり防止)

				///////////////----------ここからforeach-----------////////////
				//直近○件表示を出す
				foreach (NCMBObject objdata in objList) {//new
					int listCallNum = objList.Count - 1;//
					List<float> statusData = new List<float>();//グラフ用
					List<float> statusDataPair = new List<float>();//グラフ用



					Dictionary<string, string> pairDic = new Dictionary<string, string> ();
				//	if(objdata["pair"].ToString() == "0"){
					if(!objdata.ContainsKey("pair") || objdata["pair"].ToString() == "0"){
						//通常の処理


						//凡例作成ペア無し
						string nyusyokikan;
						var item = GameObject.Instantiate(bonreiPrefab) as Transform;//プレファブを生成
						item.SetParent(bonreiParent); //レイアウトグループのある親にセッ
						bonreiGOs.Add(item);
						//DateTime dt = objdata.UpdateDate.Value;//データ更新日をDateに
						DateTime dt = objdata.CreateDate.Value;//データ更新日をDateに

						//UTCをJSTに
						TimeZone zone = TimeZone.CurrentTimeZone;
						TimeSpan offset = zone.GetUtcOffset(DateTime.Now);//オフセット取得して差分を出す
						DateTime jst = dt + offset;//差分を計算してJSTにする

						string thisDay = jst.ToLongDatePattern();//更新日の表記を整形
						string thisTime  = jst.ToShortTimeString();
						nyusyokikan = usrManager.nyusyoSabun(dt);
						item.name = objdata.ObjectId.ToString();//プレファブ名をObjIDにする.このIDで詳細グラフを表示する
						item.GetComponent<Text>(). text = thisDay +  thisTime + ":<size=30><color=" + texColors[po] + ">●</color></size>入所" + nyusyokikan + "日";//できればよみやすい形式に整形
						string dateFull = thisDay +  thisTime + "<size=30><color=" + texColors2[po2] + ">■</color></size>";//pairグラフ表示用texColors2を使用
						//詳細データグラフの日付用
						string mon_day = jst.ToString("MM"+"月" + "dd" + "日");
						soyousaiDateList.Add(mon_day);//詳細グラフに日付表示用


							//return;
						//ペア無しデータ作成
						string json = Json.Serialize(objdata["skillPo"]);//SkillPoのデータだけを取り出すDictionaryでくるのでJsonにする
						_skillPo  = Json.Deserialize (json) as Dictionary<string, object>;//それをDictionaryにする

						//実際にデータを取り出して加工する
						int ponagasa  = _skillPo.Count;
						for( int i=0; i < ponagasa; i++){
							int indexNum = i + 1;//0がないから
							string callNum = "m0" + indexNum.ToString();
							float skillfloat = float.Parse( _skillPo[callNum].ToString());
							//パーセントに計算
							//m01 =3,m02=4, m03=6, m04=4,m05=2,m06=8, m07=4

							string sex = user ["sex"].ToString();
							if (sex == "0") {

								//男子のポイントをパーセントにする
								if(callNum == "m01"){
									skillfloat = 100f*(skillfloat / 15f);
								}else if(callNum == "m02"){
									skillfloat = 100f*(skillfloat / 20f);
								}else if(callNum == "m03"){
									skillfloat = 100f*(skillfloat / 30f);
								}else if(callNum == "m04"){
									skillfloat = 100f*(skillfloat / 20f);
								}else if(callNum == "m05"){
									skillfloat = 100f*(skillfloat / 10f);
								}else if(callNum == "m06"){
									skillfloat = 100f*(skillfloat / 40f);
								}else if(callNum == "m07"){
									skillfloat = 100f*(skillfloat / 20f);
								}

							} else {//女子の場合
								//女子のポイントをパーセントにする
								if(callNum == "m01"){
									skillfloat = 100f*(skillfloat / 15f);
								}else if(callNum == "m02"){
									skillfloat = 100f*(skillfloat / 30f);
								}else if(callNum == "m03"){
									skillfloat = 100f*(skillfloat / 35f);
								}else if(callNum == "m04"){
									skillfloat = 100f*(skillfloat / 20f);
								}else if(callNum == "m05"){
									skillfloat = 100f*(skillfloat / 10f);
								}else if(callNum == "m06"){
									skillfloat = 100f*(skillfloat / 40f);
								}else if(callNum == "m07"){
									skillfloat = 100f*(skillfloat / 25f);
								}
							}

							//LISTに登録
							statusData.Add(skillfloat);
							listCallNum++;//呼び出すオブジェクトを増分
							skillfloat = 0f;
						}//forここまで

						graData.Add(statusData);//多次元LISTにリストを追加
						po++;//for eachの回数
						userChecked++;
						//ペア無しデータ作成ここまで
					}else{
						noPairObj.SetActive(false);//ペア情報が1件でもあったら表示を消す
						//日付生成
						DateTime dt = objdata.CreateDate.Value;//データ更新日をDate
						//UTCをJSTに
						TimeZone zone = TimeZone.CurrentTimeZone;
						TimeSpan offset = zone.GetUtcOffset(DateTime.Now);//オフセット取得して差分を出す
						DateTime jst = dt + offset;//差分を計算してJSTにする

						string thisDay = jst.ToLongDatePattern();//更新日の表記を整形
						string thisTime  = jst.ToShortTimeString();
						string dateFull = thisDay +  thisTime + "<size=30><color=" + texColors2[po2] + ">■</color></size>";//pairグラフ表示用texColors2を使用


						//pair用のグラフへ
						pairDic.Add("pairID", objdata["pair"].ToString());
						pairDic.Add("createDate", dateFull);
						string pairJson = Json.Serialize(objdata["skillPo"]);
						pairDic.Add("skillPoJson", pairJson);
						//RawデータいれるならJson化してここに
						//トグルのON/OFFえおするためにプレファブ名をGO名に変更しておく?


						//プレファブを作成し採点者とユーザ名と日付とトグルを生成して
						var item3 = GameObject.Instantiate(pairPrefab) as Transform;//プレファブを生成
						item3.SetParent(pairParent); 
						item3.transform.FindChild("Label").GetComponent<Text>().text = pairDic["pairID"] + ":" +pairDic["createDate"] ;
						item3.name = "pair" + po2.ToString();
					//	item3.GetComponent<Text>(). text = "ペア["+pairDic["pairID"] + "]" +pairDic["createDate"] ;

						//Debug.Log(pairDic["pairID"] + ":" + pairDic["createDate"] + ":" +pairDic["skillPoJson"]);
						Dictionary<string, object> _skillPo2 = Json.Deserialize(pairDic["skillPoJson"]) as Dictionary<string, object>;//json化したSkillPoをディクショナリに戻す
						//パーセントを計算してベクトルにしてSiries生成してオブジェクトリストに入れて番号でON/OFFする

						//実際にデータを取り出して加工する
						int ponagasa2  = _skillPo2.Count;
						for( int i=0; i < ponagasa2; i++){
							int indexNum2 = i + 1;//0がないから
							string callNum2 = "m0" + indexNum2.ToString();
							float skillfloat2 = float.Parse( _skillPo2[callNum2].ToString());
							//パーセントに計算
							//m01 =3,m02=4, m03=6, m04=4,m05=2,m06=8, m07=4

							string sex = user ["sex"].ToString();
							if (sex == "0") {

								//男子のポイントをパーセントにする
								if(callNum2 == "m01"){
									skillfloat2 = 100f*(skillfloat2 / 15f);
								}else if(callNum2 == "m02"){
									skillfloat2 = 100f*(skillfloat2 / 20f);
								}else if(callNum2 == "m03"){
									skillfloat2 = 100f*(skillfloat2 / 30f);
								}else if(callNum2 == "m04"){
									skillfloat2 = 100f*(skillfloat2 / 20f);
								}else if(callNum2 == "m05"){
									skillfloat2 = 100f*(skillfloat2 / 10f);
								}else if(callNum2 == "m06"){
									skillfloat2 = 100f*(skillfloat2 / 40f);
								}else if(callNum2 == "m07"){
									skillfloat2 = 100f*(skillfloat2 / 20f);
								}

							} else {//女子の場合
								//女子のポイントをパーセントにする
								if(callNum2 == "m01"){
									skillfloat2 = 100f*(skillfloat2 / 15f);
								}else if(callNum2 == "m02"){
									skillfloat2 = 100f*(skillfloat2 / 30f);
								}else if(callNum2 == "m03"){
									skillfloat2 = 100f*(skillfloat2 / 35f);
								}else if(callNum2 == "m04"){
									skillfloat2 = 100f*(skillfloat2 / 20f);
								}else if(callNum2 == "m05"){
									skillfloat2 = 100f*(skillfloat2 / 10f);
								}else if(callNum2 == "m06"){
									skillfloat2 = 100f*(skillfloat2 / 40f);
								}else if(callNum2 == "m07"){
									skillfloat2 = 100f*(skillfloat2 / 25f);
								}
							}

//							Debug.Log(skillfloat2);
							//LISTに登録
							statusDataPair.Add(skillfloat2);
							//listCallNum++;//呼び出すオブジェクトを増分
							skillfloat2 = 0f;
						}//forここまで
							
						//graDataPair.Add(statusDataPair);//多次元LISTにリストを追加
						po2++;//pairのループ回数
						//Debug.Log("count_" + graDataPair.Count);
						graDataPair.Add(statusDataPair);//多次元LISTにリストを追加
					}//ifがペアのときのデータ作成終わり

			}//for eachここまで
			///////////////----------ここまでforeach-----------////////////


				//30件に満たない部分をゼロで埋める
				int zeroDataCount = dlDataCount - po;//POはペア無しのカウント数で残数を
				for(int p =0; p < zeroDataCount; p++){
					List<float> statusData = new List<float>(){0f, 0f, 0f, 0f, 0f, 0f, 0f};
					graData.Add(statusData);
				}
					

				//凡例の最後に合格ラインを追加
				var item2 = GameObject.Instantiate(bonreiPrefab) as Transform;//プレファブを生成
				item2.SetParent(bonreiParent); //レイアウトグループのある親にセット
				item2.GetComponent<Text>(). text = "合格ライン:<size=30><color=white>■</color></size>" ;//できればよみやすい形式に整形

				//詳細グラフ用に逆のデータを作成
				graDatarRev = new List<List<float>>(graData);
				graDatarRev.Reverse();
				soyousaiDateList.Reverse();//日付を逆順に

				//登録件数が1〜4件のときに出るエラー対策
				//if(graData.Count < 5){
				if(po < 5){
					//graphDispCount = graData.Count;
					graphDispCount = po;
				}else{
					graphDispCount = 5;
				}
//				Debug.Log("grac" + graphDispCount);
				//グラフを描画

				//検索結果件数表示
				if(userChecked < 30 ){
				kensu.text =  "全部で" + userChecked.ToString() + "件の記録があります";
				}else{
					kensu.text =  "最新の30件を表示しています";
				}


				drawGraph ();
			}
		});

	//	getdata ();

	}

	//これ使っていない?ペア表示に使う?
	void getdata(){

		NCMBObject obj2 = new NCMBObject ("Book");//BOOkってなに?
		obj2.ObjectId = "OEHVJXwOLUweq7Af";//ここ動的にいれかえる
		obj2.FetchAsync ((NCMBException e) => {        
			if (e != null) {
				Debug.Log("e");
				//エラー処理
			} else {
				//成功時の処理
				Debug.Log("ok");
				Debug.Log(obj2["player"]);
			}               
		});
	}



	void drawGraph(){
		graph.Refresh ();

		//グラフ全般の設定?
		graph.randomData = false;   // ランダムでデータ作成はしないのでfalse
		int koumokusu = graData [0].Count; //最初のグラフの項目数を取得して変数に
		graph.numPoints = koumokusu;        // 項目数を設定
		graph.hideLabels = false;
		graph.radarMinVal = 0;      // 最低
		graph.radarMaxVal = 100;    // 最大
		graph.numGrids = 5;         // グリッドの数

		graph.offset = new Vector2 (10, 0);//ずらせる
		graph.paddingLeftRight = new Vector2 (120, 120);
		graph.paddingTopBottom = new Vector2 (120, 120);

		graph.labelStrings = new WMG_List<string> (){ "食事", "身だしなみ", "衛生管理", "健康管理", "金銭管理", "社会性", "危機管理" };//男性時の項目
		graph.labelsOffset = 24;
		graph.labelsColor = Color.white;
		graph.gridColor = Color.black;

		int graDataSu = graData.Count;//Listの削除数を検出

		//グラフ色関係
		int rmvCount = myLinec.Count -graData.Count;//削除する色の範囲を数える


		int rmvStart = dlDataCount - graphDispCount;

		WMG_List<Color> mycPair = new WMG_List<Color> ();
		mycPair.SetList (myc);//mycをmycLocalにコピー
		mycPair.Reverse ();


		//ペアグラフ表示seriesPairs[i]
		graDataPair.Reverse();
		for (int pairs = 0; pairs < graDataPair.Count; pairs++) {
			WMG_Series mypairs;


			mypairs  = graph.addSeries ();//グラフにつながり(series)を追加?
			List<Vector2> pointVectorPair =  graph.GenRadar (graDataPair[pairs] , graph.offset.x, graph.offset.y, graph.degreeOffset);//
			//Debug.Log("count" + pairs);
			mypairs.pointValues.SetList(pointVectorPair);
			mypairs.hidePoints = false; 
			mypairs.hideLines = false;// 線表示
			mypairs.pointWidthHeight = 15f;
			mypairs.pointColor = mycPair[pairs];//カラーリストから色をつける
			mypairs.connectFirstToLast = true;      // 最後と最初の点をつなぐ
			mypairs.lineColor = mycPair[pairs];//ライン用のカラーリスト(半透明)をつける
			mypairs.lineScale = 1.5f;//1.5
			mypairs.pointPrefab = 1;//ポイントの形を変えるラインの形も変えよう
			mypairs.linkPrefab = 0;//線を点線に
			mypairs.name = "mypair" + pairs.ToString();

		}





		//最初にseries全部作っておく

		//データが30件以下の処理をしておく
		int maxdatasu;
		if (graDatarRev.Count < dlDataCount) {
			maxdatasu = graDatarRev.Count;
		} else {
			maxdatasu = dlDataCount;
		}

		maxdatasu = 30;


//		Debug.Log ("max" + maxdatasu);
		int nullKaisu = dlDataCount - graDatarRev.Count;

//		if (i < nullKaisu) {
			//LISTに足
//		}

		for (int i = 0; i <maxdatasu; i++) {
			//seriesArr [i] = graph.addSeries ();//グラフにつながり(series)を追加?
		List<Vector2> pointVector2 = graph.GenRadar (graDatarRev [i], graph.offset.x, graph.offset.y, graph.degreeOffset);//graDatarRev  graData

			seriesArr [i].pointValues.SetList (pointVector2); 
			seriesArr [i].hidePoints = false;              // 点を表示
			seriesArr [i].pointWidthHeight = 18f;
			seriesArr [i].pointColor = myLinec[i];//カラーリストから色をつける
			seriesArr [i].connectFirstToLast = true;      // 最後と最初の点をつなぐ
			seriesArr [i].lineColor = myLinec[i];//ライン用のカラーリスト(半透明)をつける
			seriesArr [i].lineScale = 1.5f;
			//seriesArr [i].da
			seriesArr [i].dataLabelsEnabled = false;
		}
			
		//合格ラインを描画
		//WMG_Series series0 = graph.addSeries ();//グラフにつながり(series)を追加?
		List<float> statusData0 = new List<float> (){ 74, 74, 74, 74, 74, 74, 74 };//合格点ライン表示用
		List<Vector2> pointVector0 = graph.GenRadar (statusData0, graph.offset.x, graph.offset.y, graph.degreeOffset);
		series0.pointValues.SetList (pointVector0); 
		series0.hidePoints = true;              // 点を表示
		series0.pointWidthHeight = 20f;
		series0.connectFirstToLast = true;      // 最後と最初の点をつなぐ
		series0.lineColor = Color.white; // 線の色白
		series0.lineScale = 3f;

	//graph.Refresh ();

		//表示件数ドロップダウンを変化させる
		dropdownItem ();
		//不要な凡例や線を消す

		//初回は5がマックス値
		if (userChecked < 5) {
			//graphDispCount = graData.Count;//5件以下の数をここに
			graphDispCount = userChecked;
		} else {
			graphDispCount = 5;
		}

		hideSeries (graphDispCount);//不要な線と点と凡例を消す

	}


	//グラフの表示
	void hideSeries(int hyoujisu){//引数は表示件数
		WMG_List<Color> myLinecLocal = new WMG_List<Color>();
		myLinecLocal.SetList (myLinec);

		int rmvStart = dlDataCount - graphDispCount;
		//myLinec.Reverse ();//リストを逆順にする
		//myLinec.RemoveRange (0, rmvStart);//最新版を残す設定で日付を削除して色数合わせる
		myLinecLocal.RemoveRange(graphDispCount, rmvStart);
		//myLinecLocal.Reverse ();//リストを逆順にする

		//Debug.Log (rmvStart);
		//Debug.Log (myLinecLocal.Count);

		int po = 0;

		//Debug.Log("hikisu" + hyoujisu);
		//レーダーグラフ線と点を非表示にする
		//int rmvStart = dlDataCount - graphDispCount;
		for(int i=0; i < dlDataCount; i++){
			seriesArr[i].hideLines = true;
			seriesArr[i].hidePoints = true;
		}

		//レーダーグラフ線と点を表示する
		int showStart = dlDataCount - 1;
		int showEnd = showStart - hyoujisu;
//	Debug.Log (showStart +":" + showEnd);
	for(int t = showStart; t > showEnd; t--){
	//	for(int t = 0; t < hyoujisu; t++){
			//Debug.Log (t);
			seriesArr [t].pointColor = myLinecLocal[po];
			seriesArr [t].lineColor = myLinecLocal[po];
			seriesArr[t].hideLines = false;
			seriesArr[t].hidePoints = false;
			po++;
		}



		//凡例を表示する
		for (int p = 0; p < graData.Count; p++) {
			if (p < bonreiGOs.Count) {
				GameObject delGO = bonreiGOs [p].gameObject;
				delGO.SetActive (true);
			}
		}

		//凡例を非表示にする
	if(hyoujisu < 6){
			for(int q = hyoujisu; q < graData.Count; q++){
				if (q < bonreiGOs.Count) {
					GameObject delGO = bonreiGOs [q].gameObject;
					delGO.SetActive (false);
				}
			}
			//return;
		}else{
			for(int q = hyoujisu; q < graData.Count; q++){
				if (q < bonreiGOs.Count) {
					GameObject delGO = bonreiGOs [q].gameObject;
					delGO.SetActive (false);
				}
		}
		}

	}
		
		

	public void gradeletetest(){
		series1.hideLines = true;//series1の線を消す
		series1.hidePoints = true;//series1のポイントを消す

	}

	//個別のグラフを表示する.凡例をタップするとここを実行する?

	//objIdを受ける
	//データbaseをグラフ化する


	//詳細グラフのドロップダウンをここで受ける
	public void droplistChanged(int result){
		genreID = result;
		//毎回グラフの中身を入れ替える
		syousaiVec = new List<Vector2>();
		goukakuVec = new List<Vector2>();
		dateListLocal = new List<string> (soyousaiDateList);//加工用のリストを新規に作成する

		List<List<float>> oresenLocal = new List<List<float>>(graData);
		oresenLocal.Reverse ();
		int rmvPos = dlDataCount - graphDispCount;
//		Debug.Log ("userChecked_" + );
//		Debug.Log ("rmvPos_" + rmvPos);
		if (rmvPos > 0) {
			oresenLocal.RemoveRange (0, rmvPos);
		}

//		Debug.Log(oresenLocal.Count);

		if (result > 0) {//最初のドロップダウン選択時のエラー排除用
			result--;
			int po = 1;
			//折れ線グラフ用データ作成
			for  (int i= 0; i < oresenLocal.Count ; i++){//横グラフにするgraData これが正解
				//ここでデータ作成
				syousaiVec.Add(new Vector2(po, oresenLocal [i] [result]));//List syousaidtaに選択したジャンルのデータを追加graData
				goukakuVec.Add(new Vector2(po, 74));
				po++;
	//			Debug.Log (i);
			}
			syousaiTitle = genreList[result];

			syousaiGraph.SetActive (true);
			//Debug.Log(oresenLocal.Count);
			//Debug.Log(checkedCount);
			//件数に応じて増減させる
		
			int rmvStart = userChecked - graphDispCount;
//			Debug.Log (rmvStart);
			if (rmvStart < 0) {
				rmvStart = 0;
				//下の計算は659行あたりも同じにすること

				//dateListLocal.RemoveRange (0, rmvStart);//最新版を残す設定で日付を削除するとグラフが削れる
			} else {
				dateListLocal.RemoveRange (0, rmvStart);//最新版を残す設定で日付を削除するとグラフが削れる
			}
			drawSyousaiGra ();//データセット完了後にグラフを描画する
		}else{
			result = 0;
		}
		//end IF
	}


	//詳細グラフ件数表示変更用
	void syousaiChange(){
		goukakuVec = new List<Vector2>();

		Debug.Log ("genreID" + genreID);
		syousaiVec = new List<Vector2>();
		List<List<float>> oresenLocal = new List<List<float>>(graData);
	//	int rmvPos = graData.Count - graphDispCount;
		int rmvPos = userChecked - graphDispCount;
		Debug.Log (rmvPos);
		Debug.Log ("V" + oresenLocal.Count);
		//oresenLocal.Reverse ();
		oresenLocal.RemoveRange (0, rmvPos);

		int poz = 1;
		if (genreID > 0) {
			genreID--;
			for (int i = 0; i < oresenLocal.Count; i++) {//横グラフにするgraData これが正解
//				Debug.Log ("int" + i);
				syousaiVec.Add (new Vector2 (poz, oresenLocal [i] [genreID]));//List syousaidtaに選択したジャンルのデータを追加graData
				goukakuVec.Add (new Vector2 (poz, 74));
				poz++;
			}
		}

		if (syousaiGraph.GetActive ()){
			
		dateListLocal = new List<string> (soyousaiDateList);//加工用のリストを新規に作成する

			//件数に応じて増減させる
		//	int rmvStart = checkedCount - graphDispCount;
			int rmvStart = userChecked - graphDispCount;
				if (rmvStart < 0) {
					rmvStart = 0;
					//下の計算は659行あたりも同じにすること
					dateListLocal.RemoveRange (0, rmvStart);//最新版を残す設定で日付を削除するとグラフが削れる
				} else {
			dateListLocal.RemoveRange (0, rmvStart);//最新版を残す設定で日付を削除するとグラフが削れる
			}
			drawSyousaiGra ();//データセット完了後にグラフを再描画する
		}
		//end IF
	}




	public void dropdownItem(){
		hyoujiDrop.ClearOptions ();//一旦リセット
		//int grakensu = checkedCount;
		int grakensu = userChecked ;
		if (grakensu < 6) {
			hyoujiDrop.options.Add (new Dropdown.OptionData { text = "〜5件" });
		}
		if (grakensu > 5 && grakensu < 11) {
			hyoujiDrop.options.Add (new Dropdown.OptionData { text = "〜5件" });
			hyoujiDrop.options.Add (new Dropdown.OptionData { text = "10件" });
		}
		if(grakensu > 10 && grakensu <21){
			hyoujiDrop.options.Add (new Dropdown.OptionData { text = "〜5件" });
			hyoujiDrop.options.Add (new Dropdown.OptionData { text = "10件" });
		hyoujiDrop.options.Add(new Dropdown.OptionData { text = "20件" });
		}
		if(grakensu > 20 && grakensu <31){
			hyoujiDrop.options.Add (new Dropdown.OptionData { text = "〜5件" });
			hyoujiDrop.options.Add (new Dropdown.OptionData { text = "10件" });
			hyoujiDrop.options.Add(new Dropdown.OptionData { text = "20件" });
		hyoujiDrop.options.Add(new Dropdown.OptionData { text = "30件" });
		}

		hyoujiDrop.RefreshShownValue();

	}



	//レーダーグラフ表示件数変更ドロップダウン用
	public void hyoujikensuDropChanged(Dropdown dropdown){

		if (dropdown.value == 0) {
			if (userChecked > 0 && userChecked < 5) {
				graphDispCount = userChecked;
			}else {
				graphDispCount = 5;
			}
		} else if (dropdown.value == 1) {
			if (userChecked >5 && userChecked < 10) {
				graphDispCount = userChecked;
			} else {
				graphDispCount = 10;
			}
		} else if (dropdown.value == 2) {
			if (userChecked < 20) {
				graphDispCount = userChecked;
			} else {
				graphDispCount = 20;
			}
		}else if (dropdown.value == 3) {
			if (userChecked < 30) {
				graphDispCount = userChecked;
			} else {
				graphDispCount = 30;
			}
		}
			
		syousaiChange();//詳細グラフを更新
		hideSeries (graphDispCount);
	}


	//詳細グラフの描画
	void drawSyousaiGra(){

		mycLocal = new WMG_List<Color> ();
		mycLocal.SetList (myc);//mycをmycLocalにコピー
		mycLocal.Reverse ();

		int rmvStart = 0;
		//int rmvStart = dlDataCount - graphDispCount;
		if (userChecked > 4) { //5件以上ならプルダウンの件数利用
			rmvStart = dlDataCount - graphDispCount;
		} else {
			rmvStart = dlDataCount - userChecked;//5件以下なら実際のデータ数で
		}

			mycLocal.RemoveRange (0, rmvStart);//最新版を残す設定で日付を削除して色数合わせる


		int LastDate = dateListLocal.Count - 1;
		// x軸の文字を表示する設定
		syousaiGraphGO.graphTitleOffset = new Vector2 (0, 60);
		syousaiGraphGO.graphTitleString = "[" + syousaiTitle+ "]" + dateListLocal[0] + "〜" + dateListLocal[LastDate];//グラフの上部に表示されるタイトル
		syousaiGraphGO.groups.SetList(dateListLocal);
		syousaiGraphGO.useGroups = true;
		syousaiGraphGO.xAxis.LabelType = WMG_Axis.labelTypes.groups;
		syousaiGraphGO.xAxis.AxisLabelSize = 20;
		syousaiGraphGO.xAxis.AxisLabelRotation = 70f;
		syousaiGraphGO.legend.hideLegend = true;//グラフの下の小さい凡例を消す
	


		int _xaxismemori = dateListLocal.Count;
		syousaiGraphGO.xAxis.AxisMaxValue = _xaxismemori;//x軸最大値
		syousaiGraphGO.xAxis.AxisNumTicks = _xaxismemori;
		syousaiGraphGO.xAxis.AxisMinValue = 0;//x軸最小値
		syousaiGraphGO.xAxis.AxisLabelSize = 18;//y 軸ラベルフォントサイズ
		syousaiGraphGO.yAxis.AxisMaxValue = 100;//y軸最大値
		syousaiGraphGO.yAxis.AxisMinValue = 0;//y軸最小サイズ
		syousaiGraphGO.yAxis.AxisNumTicks = 11;//y 軸分割
		syousaiGraphGO.yAxis.AxisLabelSize = 18;//y 軸ラベルフォントサイズ
		syousaiGraphGO.autoFitLabels = false;
		//syousaiGraphGO.legend.legendEntryFontSize = 24;


		series100.pointValues.SetList(syousaiVec);
		//series100.seriesName = "詳細";
		series100.usePointColors = true;
		//series100.usePointColors = false;
		series100.pointColors = mycLocal;//複数色

		series100.pointWidthHeight = 30;
		series100.lineColor = Color.gray;
		series100.lineScale = 2f;
		series100.dataLabelsEnabled = true;
		series100.dataLabelsFontSize = 24;
		series100.dataLabelsOffset = new Vector2 (18, -5);
		series100.dataLabelsColor = Color.white;

		//合格ライン描画用
		series200.pointValues.SetList(goukakuVec);
		series200.hidePoints = true;              // 点を表示
		series200.pointWidthHeight = 20f;
		series200.connectFirstToLast = true;      // 最後と最初の点をつなぐ
		series200.lineColor = Color.white; // 線の色白
		series200.lineScale = 2f;

	}


	// 詳細グラフを閉じる用

	public void closeSyousaiGra(){
		syousaiGraph.SetActive (false);

		//ドロップダウンをリセットする
		dropGO.GetComponent<Dropdown>().value = 0;
	}

}

 

AIキャラに追いつかれるとゲームオーバー

いくつかの設定項目あります

  • AIキャラ(AiThirdPersonController)のCupsuleColliderIsTriggerONにする
  • AiThirdPersonControllerにTagを設定する(Tagの付け方ははここを参照)このTag名で当たったのがAiかどうか判定します
  • 下記のスクリプトを作成し,ThirdPersonController(自分のキャラ)にアサインする

スクリプト(AiHit.cs という名前で保存)

using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;//シーン遷移をするのに必要

public class AiHit : MonoBehaviour {

	[SerializeField, HeaderAttribute ("AIキャラのタグ名")]
	public string myAiTag;

	[SerializeField, HeaderAttribute ("AIキャラに捕まったときのシーン名")]
	public string AiHitScene;

	void OnTriggerEnter(Collider hitCollider) {
		if (hitCollider.gameObject.tag == myAiTag) {
			this.gameObject.SetActive (false);//Playerを見えなくする
			Invoke("AiHitEnd", 2f);
		}
	}


	void AiHitEnd(){
		SceneManager.LoadScene (AiHitScene);//AIあたったシーン名へ
		//Destroy(this.gameObject);//Playerを消去する(使っていない)
	}
}

アサインしたら,ThirdPersonControllerのInspectorを確認し,AIキャラクタのタグ名を指定し,AIキャラに捕まったときのシーン名も指定する

ゲームを実行して確認してください.AIに追いつかれたら2秒後に指定したシーン名に遷移します