2020 ソフトウェア設計及び演習用の班Wiki

19::gr06::モジュール化::プレイヤー

WASD.cs

  • WASD移動
    • floatでmoveSpeed(移動速度)の初期値を与え、WASDを押したときにx軸,z軸方向に速度を与えて、速度ベクトルの長さを1秒でmoveSpeedだけ進むようにする。
  • LeftShift(走り)
    • if(velocity.magnitude > 0) /* いずれかの方向に移動している場合 */ のときに,LeftShiftを押すとvelocityを1.3倍してanimator.SetBoolでアニメーションをセット
  • LeftControl(しゃがみ)
    • 走りと同様
  • Space(ジャンプ)
    • Physics.Raycast()によってプレイヤーから地面に向かって光線を出し,光線とGroundタグのついたオブジェクトが衝突した場合に,地面にいるという判定を行って地面にいる場合にジャンプを可能にし地面から離れたときにアニメーションを動かす
  • カメラの向いている方向に歩くようにする
    • 無回転状態のプレイヤーのZ+方向(後頭部)を,カメラの水平回転(refCamera.hRotation)で回した移動の反対方向(-velocity)に回す回転に段々近づける transform.rotation=Quaternion.Slerp(transform.rotation,Quaternion.LookRotation(refCamera.hRotation *velocity),applySpeed)

PlayerHealth.cs

  • ライフ管理とその処理
    • public const int maxHealthでライフ最大値を設定し,public int currentHealthに入れる
    • OnCollisionEnter関数によって,RigidBodyを持つ物体と衝突したときの処理,この場合はさらに条件式でenemyというタグがついた物体に当たった時に体力を1減らしてmutekiFlagを1にする mutekiFlagが1の間はダメージを受けず、mutekiTimeを設定し、それから徐々にTimeStepを減らしていくことで無敵時間を実現
    • ライフが0になった場合transform.positionによって位置を初期化

LifeGauge.cs

    • PlayerHealth.csからcurrentHealthを参照してライフゲージを画面に表示

PlayerFollowCamera.cs

  • プレイヤーに追従するカメラのプログラム
    • マウスで視点移動をする
    • y軸方向には角度制限を設ける


最終更新日:2019/07/05 16:38:03