実現したいこと
mainCamera内に移ってから敵キャラが動き始めるようにする。
前提
unityで2Dゲームを作っています。
敵キャラがカメラ内に入った瞬間に動き始めるようにしました。
今まではエラーは起きていなかったんですが、急にnull参照が起きるようになりました。
発生している問題・エラーメッセージ
null参照
該当のソースコード
public class Enemy : MonoBehaviour
{
[SerializeField]private LayerMask groundLayer;
[SerializeField]private GameManager gameManager;
[SerializeField] private float enemySpeed;
[SerializeField]private Transform wallChecker = null; [SerializeField] private LayerMask playerLayer; private const string mainCameraName = "MainCamera";//該当箇所 private bool Rendered = false; public bool isAttack; private Rigidbody2D rb; [SerializeField] private Player player; // Start is called before the first frame update void Start() { rb = GetComponent<Rigidbody2D>(); } // Update is called once per frame void Update() { if (Rendered) {//カメラに映ったときに動き始める var velocity = rb.velocity; velocity.x = enemySpeed; rb.velocity = transform.rotation * velocity; } } private void FixedUpdate() { bool result = Physics2D.OverlapBox(//壁との当たり判定 wallChecker.position, wallChecker.lossyScale, wallChecker.eulerAngles.z, groundLayer ); if(result) { transform.Rotate(new Vector2(0, 180));//向きを反転 } } private void OnWillRenderObject() { if(Camera.current.tag == mainCameraName) { Rendered = true; } } private void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.CompareTag("Player")) { SceneController.CurrentSceneName(); gameManager.GameOver(); } } private void OnTriggerEnter2D(Collider2D collision)//落ちた際の処理 { if (collision.gameObject.CompareTag("DeadSpace")) { this.gameObject.SetActive(false); } }
}
試したこと
今までこれで動いていたので急にnull参照が出てきた理由がわかりません。正直、お手上げです。
詳しい方、ご教授お願い致します。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー