⑧時間の管理について(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に戻る というスクリプトができました。

 

f:id:loveyama1976:20150425121729p:plain

 これがパンチ受けた1発目で0.36秒タイムが増えているのがわかります

f:id:loveyama1976:20150425121815p:plain

これが何発か敵の攻撃をうけて、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のトリガーで推移するようにすれば、

”ため攻撃”の完成です!

 

 

時間管理 分かりやすかったでしょうか…ではまた!