⑧時間の管理について(Time.deltaTime関数を超わかりやすく!)
Time.deltaTimeは直近のフレームからの経過時間を示す
となっていますが、ど素人で全くわからなかったので、解析しました。
超分かりやすく説明します。
要は、よーいスタート! という関数でした。
①敵のBukiのtagの攻撃をうけたら、ダウンする(トリガー指定)を作る。
これは衝突判定であるOnCollisionStay2Dを使用します。
使い方は簡単。1回目、2回目と敵のパンチがあたったら、timeが増えて行って、合計1秒以上攻撃を受けたら、ダウンするというトリガーを出す関数をつくりました。
まず、スクリプトの上ので
public float time = 0;
を指定します。
public に指定すると、timeが増えていく所が画面のInspector で目でみて確認可能!
void OnCollisionStay2D(Collision2D collision)
{ if (collision.gameObject.tag == "Buki" )
{ time = time + Time.deltaTime; if( time >= 1.0f )
{ Animator myAnimator = GetComponent<Animator>();
myAnimator.SetTrigger("Down");
//そして、ダウンしたら、timeをゼロに戻す
time = 0; }
}
}
これで、敵のパンチを受けたらtimeがたまっていき、1秒を超えたらダウンする。
そしてtimeが0に戻る というスクリプトができました。
これがパンチ受けた1発目で0.36秒タイムが増えているのがわかります
これが何発か敵の攻撃をうけて、timeが1秒を超え、ダウンして、timeが0に戻ったところです。
②ため攻撃を作る。
Update関数ただTime.deltaTime関数 を入れると、画面のInspector timeがずっと増え続けるだけです。
これは、スタートしてからの経過時間を使うのに使えます。
ため攻撃はボタンを押してる時だけtimeをふやしたいので、
Update関数にif分で条件をつけます。
//Fire1を押している間、timeが増え続ける
if( Input.GetButton("Fire1")
{
time = time + Time.deltaTime;
//3秒を超えたら、強烈殴打攻撃トリガーをだす
if( time >= 3.0f ) { Animator myAnimator = GetComponent<Animator>(); myAnimator.SetTrigger("kyoretsuouda");
//そして、timeをゼロに戻す time = 0; }
}
アニメーションで通常攻撃より3倍とか強力な攻撃を作り、
kyoretsuoudaのトリガーで推移するようにすれば、
”ため攻撃”の完成です!
時間管理 分かりやすかったでしょうか…ではまた!