私はポイントaとbの間の接触時に "ランプ"を生成するスクリプトを実行しようとしています。このコードはランプの要素がどこにあるべきかのリストを受け取り、その後それらをinstanciatesし、画面上に配置します。コルーチンのみ一度だけ発射
しかし、コルーチンは一度しか実行されていないため、なぜ私は理解できません。誰か助けてくれますか?この機能は、それがRamp
オブジェクトのリストとして他のコードによって処理されなければならないのIEnumerableあるので
は事前に非常に
public IEnumerator CreateRamp(List<Vector3> lP, float angle)
{
int i = 1;
while (i <= lP.Count)
{
Debug.Log("Iteration " + i + " of " + lP.Count + " position is " + lP[i]);
GameObject item = Instantiate(Resources.Load("floor")) as GameObject;
item.transform.position = current_Position;
item.transform.eulerAngles = new Vector3(0, 0, UnityEngine.Random.Range(0f, 360f));
item.GetComponent<Ramp>().strtPos = item.transform.position;
item.GetComponent<Ramp>().strtRot = item.transform.eulerAngles;
item.GetComponent<Ramp>().strtScale = new Vector3(0.4f, 0.4f, 1);
item.GetComponent<Ramp>().tgtRot = new Vector3(0, 0, angle);
item.GetComponent<Ramp>().tgtPos = lP[i-1];
i += 1;
yield return new WaitForSeconds(0.2f);
}
}
したがって、 'lP.Count'の返却は何ですか? –
あなたの問題に関係はありませんが、 '.GetComponent()'をループごとに1回呼び出して結果をローカル変数に保存し、5回の呼び出しでその変数を使用する必要があります。 –
StartCoroutineを使用してこのメソッドを実行していますか?あなたはそれを通常のメソッド:CreateRamp(...)として呼び出すと、一度だけ実行されます。 –