2017-07-28 24 views
-2

私のforループが機能しなくなっています。私はそれを1回限り、または制限なしで取得することができます。私は最大3回インスタンス化するコインを取得しようとしています。私はforループ自体が間違っているとは思わないが、どこかの構造がある。ループはLooted関数にあります。私のforループが機能しない

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class corpseKicked : MonoBehaviour { 

private Rigidbody2D rb; 
private Animator anim; 
public GameObject coinPrefab; 
public Transform coinSpawn; 
private bool kicked = false; 
public float timer = 2f; 
public GameObject deathFlamePrefab; 
private bool flamer; 
private bool pay = false; 
private bool broke = false; 

void Start() 
{ 
    anim = GetComponent<Animator>(); 
    rb = GetComponent<Rigidbody2D>(); 
} 

// Update is called once per frame 
void Update() 
{ 
    Looted(); 
} 

public void OnTriggerEnter2D(Collider2D other) 
{ 
    if (!kicked && other.gameObject.tag == "kickIndicator") { 
     kicked = true; 
     transform.Translate (0.0f, .05f, 0.0f); 
    } 
} 

public void Looted() 
{ 
    if (!pay && kicked) { 

     pay = true; 
     Instantiate (coinPrefab, coinSpawn.position, coinSpawn.rotation); 
     kicked = false; 
     pay = false; 
     for (int i = 1; i <= 3; i++) 

      Debug.Log ("$$$$$$$$$"); 
    } 
} 
+3

内に配置するには 'i> = 3;'はi <= 3; 'にする必要があります。これが真実のときには「続行」ではなく、「これが真実である間続行」です。オハイオ州の右の – Blorgbeard

+0

。私はそのことを忘れてしまった。私はランダムな組み合わせを試していたところまできた。ありがとう –

+0

あなたの質問を変更して、修正されたソースコードを表示しないでください。これは無益です。 – abto

答えて

0
public GameObject deathFlamePrefab; 
private bool flamer; 
private bool pay = false; 
private bool broke = false; 
private int kickedCount = 0; 

void Start() 
{ 
    anim = GetComponent<Animator>(); 
    rb = GetComponent<Rigidbody2D>(); 
} 

// Update is called once per frame 
void Update() 
{ 
    Looted(); 
} 

public void OnTriggerEnter2D(Collider2D other) 
{ 
    if (!kicked && other.gameObject.tag == "kickIndicator") { 
     kicked = true; 
     transform.Translate (0.0f, .05f, 0.0f); 
    } 
} 

public void Looted() 
{ 
    if (!pay && kicked) { 

     pay = true; 

     kicked = false; 

     if (kickedCount < 3) 
     { 
      Instantiate (coinPrefab, coinSpawn.position, coinSpawn.rotation); 
      kickedCount++; 
     } 
     pay = false; 
    } 
} 

アムから始まるカウントする必要がある特別な理由がありますしない限り、

for (int i = 0; i < 3, i++) 

を言うためにかかわらず、それがより一般的と慣用句ですifステートメント

+0

それはまだ3回以上のインスタンス化です。基本的には、死体をキックしてコインが出てくる。私は、プレイヤーが死体を3回蹴った後に、コインを身体から回収できないようにしたい。 –

+0

1キックにつき1コインですか? – SDSMTKyzer

+1

それは正しい私の良い人です。 –

1

代わりにこれを試してみてください:

public void Looted() 
{ 
    if (!pay && kicked) { 

     pay = true; 
     Instantiate (coinPrefab, coinSpawn.position, coinSpawn.rotation); 
     kicked = false; 
     pay = false; 
     for (int i = 1; i <= 3; i++) 
     {  
      Debug.Log ("$$$$$$$$$"); 
     } 
    } 
} 

for条件の違いを参照してください。 「この条件が真である限り、このループを実行する」と考えてください。 iは1から始まり、i++というステートメントの最後にインクリメントされるため、これは期待どおり3回実行されます。

あなたはpayがいますが、必要があるかもしれないものに不確実な1

+0

お役立ち情報それでもやっている。賃金が真実になるたびにコインをインスタンス化しています。情報をありがとう –

関連する問題