object reference not set to the instance of an object line 29. i want to get script of playermovement and if isattacking equal true i want to kill enemy. c# unity5
using UnityEngine; using System.Collections;
public class Enemy : MonoBehaviour { public float playerDistance; public Rigidbody2D playerRB2D;
public PlayerMovement playerMovement { get { return GetComponent(); } }
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update() {
GetComponent<PlayerMovement>();
playerDistance = Vector3.Distance(playerRB2D.transform.position, transform.position);
if (playerMovement.isAttacking == true) //this line 29
{
if (playerMovement.isAttacking == true && playerDistance <= 1)
{
Debug.Log("Die");
Destroy(gameObject);
playerMovement.isAttacking = false;
}
}
}
}
using UnityEngine; using System.Collections;
public class PlayerMovement : MonoBehaviour {
private Rigidbody2D rbody;
private Animator anim;
public bool isAttacking = false;
//public float enemyDistance;
//public Rigidbody2D enemyRB2D;
// Use this for initialization
void Start () {
rbody = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update () {
Vector2 movement_vector = new Vector2(Input.GetAxisRaw("Horizontal") , Input.GetAxisRaw("Vertical"));
//if not zero must be moving
if (movement_vector != Vector2.zero)
{
anim.SetBool("isWalking", true);
anim.SetFloat("input_x", movement_vector.x);
anim.SetFloat("input_y", movement_vector.y);
}
else //sees if in idel or not changes anim
{
anim.SetBool("isWalking", false);
}
//movment by 1
rbody.MovePosition(rbody.position + movement_vector * Time.deltaTime);
//sets attack to true if space hit
if (Input.GetKeyDown(KeyCode.Space))
{
isAttacking = true;
Debug.Log("Attack");
}
//Makes anim attack
if (isAttacking == true)
{
anim.SetBool("isAttacking", true);
isAttacking = false;
}
else
{
anim.SetBool("isAttacking", false);
}
}
// checks if touch enemy and then if can attack then kill
//void OnTriggerEnter2D(Collider2D other)
//{
// {
// if (other.gameObject.tag == ("Enemy"))
// {
// enemyDistance = Vector3.Distance(enemyRB2D.transform.position, transform.position);
// Debug.Log("Touch");
// if (isAttacking == true && enemyDistance <= 1)
// {
// Debug.Log("Die");
// Destroy(other.gameObject);
// isAttacking = false;
// }
// }
// }
//}
}//end
Answer by beau101023 · Dec 11, 2015 at 02:04 AM
This may be your problem,
this:
GetComponent<PlayerMovement>();
Should be this:
playerMovement = GetComponent<PlayerMovement>();
Now it i have another error called CS0200 Property or indexer 'Enemy.player$$anonymous$$ovement' cannot be assigned to -- it is read only
I figured it out just add into update GameObject player = GameObject.Find("Player"); Player$$anonymous$$ovement player$$anonymous$$ovement = player.GetComponent ();
Then delete GetComponent();
Your answer
Follow this Question
Related Questions
How to use the results of a dice roll? 2 Answers
How do i Instantiate sub-Points with in Multiple Points?? 0 Answers
OnGUI will not show up? 1 Answer
My audio doesn't play, I'm through my options... 1 Answer
VS Code or visual studio? 1 Answer