実現したいこと
unity3D上で動くロボットアームを作成しています。
sliderに合わせて動かしたいのですがエラー"Object reference not set to an instance of an object"が出てしまい困っています。
発生している問題・分からないこと
sliderを動かすことにより関節の角度を決めて、ロボットアームを動かしたい。
エラーメッセージ
error
1"Object reference not set to an instance of an object"
該当のソースコード
C#
1using System.Collections;2using System.Collections.Generic;3using UnityEngine;4using UnityEngine.UI;5 6namespace InverseKinematics 7{8 public class JointController : MonoBehaviour 9 {10 //robot11 private GameObject[] Joint = new GameObject[2];12 private GameObject[] Arm = new GameObject[2];13 private float[] armL = new float[2];14 private Vector3[] angle = new Vector3[2];15 16 //UI17 private Slider[] slider = new Slider[2];18 private Text[] angText = new Text[2];19 private Text[] posText = new Text[2];20 21 void Start()22 {23 //robot24 for (int i = 0; i < Joint.Length; i++)25 {26 Joint[i] = GameObject.Find("Joint_" + i.ToString());27 Arm[i] = GameObject.Find("Arm_" + i.ToString());28 armL[i] = Arm[i].transform.localScale.x;29 }30 31 for (int i = 0; i < Joint.Length; i++)32 {33 slider[i] = GameObject.Find("Slider_" + i.ToString()).GetComponent<Slider>();34 angText[i] = GameObject.Find("Angle_" + i.ToString()).GetComponent<Text>();35 }36 posText[0] = GameObject.Find("Pos_X").GetComponent<Text>();37 posText[1] = GameObject.Find("Pos_Y").GetComponent<Text>();38 39 }40 41 void Update()42 {43 for (int i = 0; i < Joint.Length; i++)44 {45 angText[i].text = slider[i].value.ToString("f2");46 angle[i].z = slider[i].value;47 Joint[i].transform.localEulerAngles = angle[i];48 }49 50 float px = armL[0] * Mathf.Cos(angle[0].z * Mathf.Deg2Rad) + armL[1] * Mathf.Cos((angle[0].z + angle[1].z) * Mathf.Deg2Rad);51 float py = armL[0] * Mathf.Sin(angle[0].z * Mathf.Deg2Rad) + armL[1] * Mathf.Sin((angle[0].z + angle[1].z) * Mathf.Deg2Rad);52 53 posText[0].text = px.ToString("f2");54 posText[1].text = py.ToString("f2");55 }56 }57}
試したこと・調べたこと
上記の詳細・結果
スペルミスやゲームオブジェクトの名前が原因かと思い修正や変更をして試しましたが上手くいきませんでした。
補足
特になし
0 コメント