2017-08-02 7 views
0

私はyoutubeのgamesplusjamesでこれを行う方法を学ぼうとしていましたが、うまくいきません。私はそれがマイナーなものだとはかなり確信していますが、私はそれが何であるか把握できません。基本的に私のキャラクターは、私がCキーを放すと、彼女の弓矢と矢を狙って狙う。しかし、私は彼女のアニメーションが動くことができるよりも速く撃たれないように遅れが必要です。誰がボールを落としたのか教えていただけますか?私はコードを単純化して、射撃や照準とは関係のない他のすべてのジャンクを取り除いた。ありがとう。私のショットディレイを働かせる方法

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 

public class tulMove : MonoBehaviour { 

public Transform arrowSpawn; 
public GameObject arrowPrefab; 

private bool aim = false; 
private bool shot = false; 

public float shotDelay; 
private float shotDelayCounter; 

private Rigidbody2D rb; 
private Animator anim; 

void Start() 
{ 

    anim = GetComponent<Animator>(); 
    rb = GetComponent<Rigidbody2D>(); 

} 

void Update(){ 

    if (!aim && Input.GetKeyDown (KeyCode.C)) 
    { 
     aim = true; 
     anim.SetTrigger ("aim"); 
    } 

    if (aim && !shot && Input.GetKeyUp (KeyCode.C)) 
    { 

     shot = true; 
     aim = false; 
     anim.SetTrigger ("shot"); 
     Instantiate (arrowPrefab, arrowSpawn.position, arrowSpawn.rotation); 
     shotDelayCounter = shotDelay; 
    } 

    if (aim && !shot && Input.GetKeyUp (KeyCode.C)) 
    { 
     shotDelayCounter -= Time.deltaTime; 

     if (shotDelayCounter <= 0) 
     { 
      shotDelayCounter = shotDelay; 
      shot = true; 
      aim = false; 
      anim.SetTrigger ("shot"); 
      Instantiate (arrowPrefab, arrowSpawn.position, arrowSpawn.rotation); 
      } 
     } 
    } 
} 
+0

と呼ばれるよう今、あなたのカウンタが正しく動作しなければならない

shotDelayCounter -= Time.deltaTime; if (aim && !shot && Input.GetKeyUp (KeyCode.C) && shotDelayCounter <= 0) { shotDelayCounter = shotDelay; shot = true; aim = false; anim.SetTrigger ("shot"); Instantiate (arrowPrefab, arrowSpawn.position, arrowSpawn.rotation); } 

あなたは、ビデオへのリンクを投稿し、現在は間違っているものについて教えてください。アニメーションが現在速すぎることを暗示していますか? – SpiritBH

+0

ビデオは私の状況に正確には当てはまりません。それは20分のようだが、彼は最初のカップルの分でタイマーのことをしてから、関連性のない健康づくりに移る。 https://www.youtube.com/watch?v=F6hUIU72JwE –

+0

申し訳ありませんが、わからない場合は基本的にタイマーを稼働させようとしています。今は結果が得られません。私は問題ではない浮動小数点数を使って次の矢印が出るまでの時間を調整することができます。最初にコードを動作させることが問題です。 –

答えて

0

あなたのコードは、今構成されている方法で、そのif文が真であるときshotDelayCounterにのみ呼び出されると、それはすべての時間真実ではないように見えます。 if文の外側にあるshotDelayCounter -= Time.deltaTime;を各フレームと呼ばれるように移動します。ような何か:それは常に

+1

喜び...純粋な...喜びの中に今。ありがとう、相棒。 –

関連する問題