2017-04-06 25 views
2

私はUnityでシューティングゲームを作っています。私は撮影スクリプトを遅らせたいと思っていましたが、私のコードは動作していないようです。どのように私はこれを解決するかもしれないかの手がかり?遅延機能以外はすべて正常に機能しました。ここでユニティシューティングスクリプトの遅延が作動しない

はコードです:

#pragma strict 

private var player   : GameObject; 
public var speed   : float; 
private var bulletCounter : int; 
var reloadtime : float = 2; 
private var reloadTimer: float = 0.0; 

function Start() { 
    player = this.gameObject; 
} 

function Update() { 
    if (reloadTimer > 0){ 
     reloadTimer -= Time.deltaTime; 
     if (reloadTimer <= 0){ 
      if(Input.GetKey("space")) { 
       Shoot(); 
      } 
     } 

     if(Input.GetKey("w")){ 
      if(player.transform.position.y < 20) { 
       player.transform.position.y += speed * Time.deltaTime; 
      } 
     } 
     if(Input.GetKey("s")){ 
      if(player.transform.position.y > -20) { 
       player.transform.position.y -= speed * Time.deltaTime; 
      } 
     } 
     if(Input.GetKey("a")){ 
      if(player.transform.position.x > -20) { 
       player.transform.position.x -= speed * Time.deltaTime; 
      } 
     } 
     if(Input.GetKey("d")){ 
      if(player.transform.position.x < 20) { 
       player.transform.position.x += speed * Time.deltaTime; 
      } 
     } 

    } 
    function Shoot() { 
     bulletCounter++; 
     var bullet = GameObject.CreatePrimitive(PrimitiveType.Cube); 
     bullet.transform.position = player.transform.position; 
     bullet.AddComponent.<BulletScript>(); 
     bullet.name = "Bullet"+bulletCounter.ToString(); 
     var audio : AudioSource = GetComponent.<AudioSource>(); 
     audio.Play(); 
     reloadTimer = reloadtime; 
    } 
} 
+0

良い質問!私は私のSpacebearプロジェクトと同じ問題を抱えています。素晴らしい解決策を得ることを願っています! – Nieck

答えて

0

私はあなたのアイデアはそれほど明確ではないと思います。それをする最も簡単な方法です。

function Shoot() { 
    ... 
    reloadTimer = Time.time + reloadtime; 
} 

、あなたはタイマー条件外の動きコード(W、S、A、D)を取得する必要があり、この

if (reloadTimer >= Time.time){ 
     if(Input.GetKey("space")) { 
      Shoot(); 
     } 
    } 
1

のように見えるべきか -

#pragma strict 
private var player   : GameObject; 
public var speed   : float; 
private var bulletCounter : int; 
var reloadtime : float = 2; 
private var reloadTimer: float = 0.0; 
function Start() { 
    player = this.gameObject; 
} 
function Update() { 
    if (reloadTimer > 0){ 
     reloadTimer -= Time.deltaTime; 
     if (reloadTimer <= 0){ 
      if(Input.GetKey("space")) { 
       Shoot(); 
      } 
     } 
    } 
    /********* Move this outside the timer condition *********/ 
    if(Input.GetKey("w")){ 
     if(player.transform.position.y < 20) { 
      player.transform.position.y += speed * Time.deltaTime; 
     } 
    } 
    if(Input.GetKey("s")){ 
     if(player.transform.position.y > -20) { 
      player.transform.position.y -= speed * Time.deltaTime; 
     } 
    } 
    if(Input.GetKey("a")){ 
     if(player.transform.position.x > -20) { 
      player.transform.position.x -= speed * Time.deltaTime; 
     } 
    } 
    if(Input.GetKey("d")){ 
     if(player.transform.position.x < 20) { 
      player.transform.position.x += speed * Time.deltaTime; 
     } 
    } 
    function Shoot() { 
     bulletCounter++; 
     var bullet = GameObject.CreatePrimitive(PrimitiveType.Cube); 
     bullet.transform.position = player.transform.position; 
     bullet.AddComponent.<BulletScript>(); 
     bullet.name = "Bullet"+bulletCounter.ToString(); 
     var audio : AudioSource = GetComponent.<AudioSource>(); 
     audio.Play(); 
     reloadTimer = reloadtime; 
    } 
} 

これが維持されますプレーヤーが撃った後の待機時間(reloadtime)の間に動きが可能になりました。

関連する問題