前提・実現したいこと
unityで物体Aが物体Bに衝突した時、物体Bが何か判定し条件分岐するプログラムを作成しています。
物体BをhostSeeingObjとして、hostSeeingObj.nameがCubeA,SphereAか、またはhostSeeingObjがnullかどうかで単純にif分で条件分岐させました。
発生している問題・エラーメッセージ
hostSeeingObjがCubeA,SphereAになっているときは問題ないですが、 hostSeeingObjがnullの時に「NullReferenceException: Object reference not set to an instance of an object」が発生し、if分の内容が実行されません。 実際にhostSeeingObjがnullなのでこのエラー内容自体は理解できますが、このままでは動作を実現できないため困っています。
該当のソースコード
void updateEye() { //ホスト視線移動後の位置 Transform GazeTargetTransform = hostGazeTarget.transform; Vector3 GazeTargetPos = GazeTargetTransform.localPosition; GameObject hostSeeingObj = trackingManager_host.getSeeingObject(); //物体Bを取得 //物体BがCubeA,SphereAか、nullかで条件分岐 if (hostSeeingObj.name=="CubeA") { GameObject target = hostSeeingObj.transform.GetChild(0).gameObject; Transform targetTransform = target.transform; Vector3 targetPos = targetTransform.position; Transform myTransform = clientGazeTarget.transform; myTransform.position = targetPos; Debug.Log(target.name); } else if (hostSeeingObj.name == "SphereA") { GameObject target = hostSeeingObj.transform.GetChild(0).gameObject; Transform targetTransform = target.transform; Vector3 targetPos = targetTransform.position; Transform myTransform = clientGazeTarget.transform; myTransform.position = targetPos; Debug.Log(target.name); } else if(hostSeeingObj == null) { Debug.Log("null"); //動作確認用 //移動座標 float x = GazeTargetPos.x - myHostGazeTargetPos.x; float y = GazeTargetPos.y - myHostGazeTargetPos.y; float z = GazeTargetPos.z - myHostGazeTargetPos.z; //クライアント位置移動 Transform myTransform = clientGazeTarget.transform; Vector3 pos = myClientGazeTargetPos; pos.x += x; pos.y += y; pos.z += z; myTransform.localPosition = pos; } }
補足情報(FW/ツールのバージョンなど)
Unity 2018.2.18f1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/29 00:07
2020/04/29 00:58
2020/04/29 02:49