This is what I have yet I don’t know what I’m doing wrong.
Here is my code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MonsterAI : MonoBehaviour {
public Transform target;
public float AiSpeed;
//set to 20
public float gravity;
Vector3 moveVector;
private Vector3 movement;
void Update ()
{
//transform.LookAt (target);
CharacterController controller = GetComponent<CharacterController>();
//Check if character is grounded
if (controller.isGrounded == false)
{
//Add gravity Vector
movement.y -= gravity * Time.deltaTime;
}
Vector3 dir = target.position - transform.position;
float angle = Mathf.Atan2 (dir.z, dir.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis (-angle + 90, Vector3.up);
movement.y -= gravity * Time.deltaTime;
movement = transform.TransformDirection (movement);
controller.Move (movement * AiSpeed * Time.deltaTime);
}
}
Figured it. For anyone who wants to learn how here is the script. Give or take.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MonsterAI : MonoBehaviour {
public bool active;
public Transform target;
public float AiSpeed;
//set to 20
public float gravity;
Vector3 moveVector;
private Vector3 movement = Vector3.zero;
void Start ()
{
}
void FixedUpdate ()
{
CharacterController controller = GetComponent<CharacterController>();
if (active)
{
movement = Vector3.forward;
} else
{
movement = new Vector3 (0, movement.y, 0);
}
movement = transform.TransformDirection (movement);
if (controller.isGrounded)
{
gravity = 0;
} else
{
gravity = gravity - 0.1f;
}
movement.y = gravity;
controller.Move (movement * AiSpeed * Time.deltaTime);
}
void Update()
{
CharacterController controller = GetComponent<CharacterController>();
if (active)
{
Vector3 dir = target.position - transform.position;
float angle = Mathf.Atan2 (dir.z, dir.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis (-angle + 90, Vector3.up);
}
}
}