Hi, i try call a method in another script, but this return " object reference not set to an instance of an object ", any idea? i am new in unity
Mi code:
EnemyController:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyController : MonoBehaviour {
public float speed = 1f;
public float maxSpeed = 1f;
private LifeController lc;
private Rigidbody2D rb2d;
// Use this for initialization
void Start () {
rb2d = GetComponent<Rigidbody2D>();
lc = gameObject.GetComponent<LifeController> ();
lc.DecrementHeart ();
}
// Update is called once per frame
void FixedUpdate () {
rb2d.AddForce(Vector2.right * speed);
float limitSpeed = Mathf.Clamp (rb2d.velocity.x, -maxSpeed, maxSpeed);
rb2d.velocity = new Vector2 (limitSpeed, rb2d.velocity.y);
if (rb2d.velocity.x > -0.1f && rb2d.velocity.x < 0.1f) {
speed = -speed;
rb2d.velocity = new Vector2 (speed, rb2d.velocity.y);
transform.localScale = new Vector3 (-speed, 1f, 1f);
}
}
void OnTriggerEnter2D(Collider2D col) {
if (col.gameObject.tag == "Player") {
float offsetY = -0.22f;
if (transform.position.y + offsetY < col.transform.position.y) {
//Destroy (gameObject);
col.SendMessage ("EnemyJump");
} else {
lc.DecrementHeart ();
col.SendMessage ("EnemyKnockBack", transform.position.x);
}
}
}
}
LifeController:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class LifeController : MonoBehaviour {
public int nHearts = 5;
public Image FullHeart;
public Sprite MiddleHeart;
public Sprite EmptyHeart;
// Use this for initialization
void Start () {
DrawHearts (nHearts);
}
// Update is called once per frame
void Update () {
}
void DrawHearts(int count) {
Image temp;
for (int i = 0; i < count; i++) {
temp = Instantiate<Image> (FullHeart);
temp.transform.SetParent(transform, false);
temp.transform.Translate (0.5f * i, 0, 0);
temp.name = "Heart" + i;
}
}
public void DecrementHeart() {
GameObject [] hearts;
hearts = GameObject.FindGameObjectsWithTag ("Heart");
for (int i = 1; i < hearts.Length; i++) {
var Heart = transform.GetChild(nHearts - i).GetComponent<Image> ();
if (Heart.sprite.name == "Hearts_0") {
Heart.sprite = MiddleHeart;
break;
} else if (Heart.sprite.name == "Hearts_1") {
Heart.sprite = EmptyHeart;
break;
} else if (Heart.sprite.name == "Hearts_2") {
continue;
}
}
}
}