以前、FPS視点で動くPlayerを制御する方法を紹介しました。
移動しているときのみに、HPを減少させたいので
velocityを使っていきます。
velocity.magnitudeというパラメータを使うことで、velocityの大きさを取得することができます。
private Rigidbody rb;
void Update() { // ココから 以前の記事で紹介した動く操作方法float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
transform.Rotate(0,x,0, Space.World);
float angleY = (360 - transform.eulerAngles.y + 90) % 360;
float radian = angleY * Mathf.Deg2Rad;
float sin = Mathf.Sin(radian);
float cos = Mathf.Cos(radian);
rb.velocity = new Vector3(cos, 0, sin) * z;
// ココまで 以前の記事で紹介した動く操作方法 // velocityが動いているときのみ処理するif (rb.velocity.magnitude > 0)
{
// velocityの大きさを引数にした関数を作成updateHP(rb.velocity.magnitude);
}
}
private void updateHP(float deltaHPacc) {
\\floatでHPを減少させていきHPacc -= deltaHPacc;
\\intへキャストHP = Mathf.RoundToInt(HPacc);
}