Unityでマルチタップのスクリプトを作ろうと試みています。
Transform型の配列「Image」を作成し、Input.touchesから複数タップした位置を配列に代入しようとしていますが、
「IndexOutOfRangeException: Index was outside the bounds of the array.」
というエラーが発生します。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class tstA : MonoBehaviour 6{ 7 public Transform[] Image ; 8 9 void Update() 10 { 11 if(Input.touchCount > 0){ 12 Touch[] myTouches = Input.touches; 13 for(int i = 0; i < myTouches.Length; i++){ 14 Image[i].position = myTouches[i].position; 15 } 16 } 17 18 //テスト用 19 if(Input.GetKeyDown(KeyCode.Space)){ 20 Debug.Log("a"); 21 Image[0].position = transform.position; 22 Debug.Log(Image[0].position); 23 Debug.Log("b"); 24 } 25 } 26}
Imageには、インスペクターから3つほど子オブジェクトのtransformを入れています。
ちなみに、//テスト用から下のコードは、試しに0番目に自身のtransformを入れるようにしていますが、ログは、
a
(-3.7,0.3,0.0)
b
a
IndexOutOfRangeException: Index was outside the bounds of the array.
と出力されます。
(Spaceキーを一回しか押してないのに、なぜかDebug.Log("a");を2回経由し、Image[0].position = transform.position;は一度代入に成功している?)
このことを含めてTransform型の配列の使い方に問題があるならば教えていただけますでしょうか。
【試したこと】
public Transform[] Image の後に、new Transform[10]を追加する > public Transform[] Image = new Transform[10]
Trasform型の配列ではなく、Vector3型の配列にしてみる
回答1件
あなたの回答
tips
プレビュー