教室を三つにして、学生はそれぞれ6人。全校生徒18人。先生は3人。
職員室を追加。
ステート
登校:まず自席に向かう。その後は自由時間。教師は職員室へ
授業開始:学生、教師は教室へ
自由時間;学生は学内自由行動。教師は職員室へ
下校:全員で学外へ移動
学校のAsset等は買ってないですが、ロジックの検証なら大丈夫かな。出来上がってから置き換えればいいし。
食事動作のアニメーションがあれば、昼食時間を作りたい。
それでタイムスケージュールにそって1日が流れるようにして、太陽光なども変化させる。
ユーザーが動かす学生を追加する場合は、
移動、這い這い移動、ジャンプ、挨拶(FllowMe、ByeByeなど)
ユーザーを動かすときは、ちゃんと壁で覆いたい。あとドアの開閉とか。
YandereSimulatorだと、玄関に靴箱があって、ちゃんと各学生に割り振りがあって、そこで靴を履き替えるという細かさ( ゚Д゚)
会話は相手のstartTalk()がtrueの時に成立。お互いに向き合って5秒程度アイドリングする
//近くの生徒と交流 if ( state ==0 && timer2 <= 0 && !isCommunicate ) { int no2 = GetNearest(); if (no2 != -1 && no2!= lastCommunicateNo) { dis = Vector3.Distance(transform.position, Yandere.Main.ch[no2].transform.position); if (dis>0.6f && dis < 1f ) { if( Yandere.Main.ch[no2].GetComponent<Character>().startTalk(no) ) { startTalk(no2); return; } } } }
navMeshはパスを取得して動かす。
UnityEngine.AI.NavMeshAgent agent; UnityEngine.AI.NavMeshPath path = null; void Start() { path = new UnityEngine.AI.NavMeshPath(); isGoal = true; GO = false; } void newGoal() { UnityEngine.AI.NavMesh.CalculatePath(transform.position, goal.position, UnityEngine.AI.NavMesh.AllAreas, path); index = 0; isGoal = false; GO = false; } void Update() { if (isGoal) return; float dis = Vector3.Distance(transform.position, goal.position); if (dis < 0.4f) { isGoal=true; return; } dis = Vector3.Distance(transform.position, path.corners[index]); if(dis<0.2f) index++; if (index >= path.corners.Length) return; Quaternion rot = Quaternion.LookRotation(path.corners[index] - transform.position); Vector3 rot2 = rot.eulerAngles; rot = Quaternion.Euler(0, rot2.y,0);//階段で傾くのでまっすぐにする transform.rotation = rot; transform.position += transform.forward * Time.deltaTime * speed; }