NullReferenceException: Object reference not set to an instance of an object
ArrowController.Update () (at Assets/ArrowController.cs:27)のエラーの解決方法を知りたいです。
コードは
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ArrowController : MonoBehaviour
{
GameObject player;
// Start is called before the first frame update
void Start()
{
this.player = GameObject.Find("player");
}
// Update is called once per frame void Update() { //フレーム毎に等速で落下させる transform.Translate(0, -0.1f, 0 ); if (transform.position.y < -5.0f) { Destroy(gameObject); } //当たり判定 Vector2 p1 = transform.position; //矢の中心座標 Vector2 p2 = this.player.transform.position; //プレイヤーの中心座標 Vector2 dir = p1 - p2; float d = dir.magnitude; float r1 = 0.5f; //矢の半径 float r2 = 1.0f; //プレイヤの半径 */ if (d < r1 + r2) { Destroy(gameObject); } }
}
です。playerは設定できていると思うのですが、関連づけができていないと言うことでしょうか?
よろしくお願い致します。
実行自体はできますが、Vector2 p2 = this.player.transform.position; が機能しておらず
playerとarrowが衝突しても消滅しません。
追記
playerのscriptは
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
} // Update is called once per frame void Update() { //左矢印が押された時 if (Input.GetKeyDown(KeyCode.LeftArrow)) { transform.Translate(-3, 0, 0); //左に3動かす } if (Input.GetKeyDown(KeyCode.RightArrow)) { transform.Translate(3, 0, 0); } }
}
です。