2017-11-04 7 views
0

私には問題があります。私は修正できないようです。Unity 2D - スクリプト起動時のNull参照

私はAIManagerスクリプトを持っています。これにはすべてのコントロールと敵の動きの仕方があります。 それから私はEnemyBasicスクリプトを持っています。これは、この敵のAI動作を表します。どのくらい頻繁に攻撃するか。

Raycastsに関するチュートリアルを使用してみました。これは私の敵の視力を実現するのに役立ちます。これはうまくいって、私の敵は私を見つけて、公然のブールでテストしました。

問題のある部分。 EnemyBasicスクリプトを無効にすると、敵は1つの場所にとどまります。彼の視界に入ると、私はEnemyBasicスクリプトを有効にしたいので、彼は私を攻撃することができます。

とNullReferenceException:オブジェクト Sight.Raycasting(のインスタンスに設定されていないオブジェクト参照)(資産/ Sight.csで:21) Sight.Update()(残念ながら、私のコードでは、これはエラーを返します資産/ Sight.csで:

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class Sight : MonoBehaviour { 

    public Transform sightStart, sightEnd; 
    public bool spotted = false; 

    void Update() { 
     Raycasting(); 
    } 

    void Raycasting() 
    { 
     spotted = Physics2D.Linecast(sightStart.position, sightEnd.position, 1 << LayerMask.NameToLayer("Player")); 

     if (spotted) 
     { 
      /*---> LINE OF ERROR */ gameObject.GetComponent<EnemyBasic>().enabled = true; 
     } 
    } 
} 

任意のアイデア:13)

は、ここに私のコードです。私は統一に慣れていないので、何かばかげたチャンスがあります。 ありがとうございました!

+0

エラーをダブルクリックし、エラーの原因となっているコード行を送信します。 – Programmer

+0

完了。私は矢印を追加しました。 – TheNewbie

+0

1.上記の 'Sight'スクリプトのGameObjectの名前は何ですか? 2. EnemyBasicスクリプトが添付されているGameObjectの名前は何ですか? – Programmer

答えて

0

@Programmerがコメントに示唆したように。私のサイトスクリプトは、EnemyBasicスクリプトと同じGameObejctの下にはないことが分かります。スクリプトをコピーして、それは魅力のように動作します。

関連する問題