テニス部の部員が着替えているときに、ロッカーの中に入って遊んでいたら、
そのままロッカーの扉を閉められて出られなくなった伊藤ともか(主人公)
このままだと空腹と尿意のパラメーターが上昇していく
部活が終わったらまたロッカーに着替えに戻ってくるから、そのタイミングで出られますw
想定外の事故だった。
こういう想定外事故が起きるような自由度の高さを追求していきたい。
ロッカーあけたら人が入ってたら驚くようなAI作りたいね。仕込みじゃなくて。
ロッカーには本体にも扉にもmeshColliderが仕込んであるので、CharacterContorollerには脱出不能。
Colliderが設定されていると反発する
CharacterController cc; cc = GetComponent<CharacterController>(); cc.Move(transform.forward * speed * Time.deltaTime);//移動
コールバック以外にもflagでも衝突が分かる
if (cc.collisionFlags != CollisionFlags.None) //衝突中
接地判断も付属してるけど、ときどきおかしい
if (cc.isGrounded) isGround = true;
接地判断は誤動作するのでraycastも必要
if (Physics.Raycast(transform.position, Vector3.down, out hit, 10f, 1)) // Layer default only
自分から下に向けて距離10でraycast
レイヤーはdefaultのみ見る
影の表示。どうせ接地判定するので影も出してみましょう
飛行やジャンプするキャラでは高さの変化をプレイヤーに伝える意味で影は必須です
shadowは、透明度ありの影画像を貼ったplaneです。rayが衝突した場所のちょっと上に置くと、いい感じで影になります。
hitした場所が距離0.2未満なら接地とみなします。
ただし、時々浮く感じがするので、少しだけ地面に押し付けます。
if (Physics.Raycast(transform.position, Vector3.down, out hit, 10f, 1))// Layer default only { shadow.transform.position = hit.point + Vector3.up * 0.15f; if (hit.distance < 0.2f) { isGround = true; cc.Move(-Vector3.up * 0.01f);// 一応押しつけしとく } }