simple AI scripting error

im trying to make a AI script without animation yet but i got some error

using UnityEngine;
using System.Collections;

public class Enemy : MonoBehaviour {

public float speed  = .05f;
	
private float _xMove;
private float _yMove;
private RaycastHit _h;
private Transform _Player;
private  float  Vector3 _distanceFromPlayer;

	void Start ()
	{
		_Player = GameObject.FindGameObjectWithTag("Player").transform;
	}
	
	void Update () 
	{
		_distanceFromPlayer = Vector3.Distance(transform.position, _Player.position);	
		
		if(_distanceFromPlayer <= 1)
			Debug.Log("Attacking Player");
		else
		{
	     transform.rotation = Quaternion.Slerp(transform.rotation,Quaternion.LookRotation(transform.position - _Player.position), Time.deltaTime * 4);
		 transform.Translate(0,0,.05f);
		}
	}
}

Assets/Robot Artwork/Enemy.cs(13,43): error CS1519: Unexpected symbol `_distanceFromPlayer’ in class, struct, or interface member declaration

Assets/Robot Artwork/Enemy.cs(13,44): error CS1519: Unexpected symbol `;’ in class, struct, or interface member declaration

1 Answer

1

You declared _distanceFromPlayer as a float Vector3, what is a very creative but non existent type. It should be only float:

    private float _distanceFromPlayer;

And the chase part also has an error: the enemy will runaway instead of chasing the player (coward chicken!). You must reverse the order of factors (player - transform). It’s also advisable to use Time.deltaTime to make the enemy chase at a frame rate independent speed:

    Vector3 playerDir = _Player.position - transform.position;
    transform.rotation = Quaternion.Slerp(transform.rotation,Quaternion.LookRotation(playerDir), Time.deltaTime * 4);
    transform.Translate(0,0, 5 * Time.deltaTime);