- Home /
AI script not using gravity
When my zombie spawns(a bit off the ground) and i am farther than the max distance than the zombie does not fall or use gravity. Does any one know how to fix this.
here is my code:
using UnityEngine; using System.Collections;
public class Zombie : MonoBehaviour {
public Transform Player;
public GameObject _zombie;
public float Movespeed = 2;
public float MaxDistance = 30;
private float CurrentHealth;
private float MaxHealth = 100;
void Start () {
CurrentHealth = MaxHealth;
Player = GameObject.FindGameObjectWithTag("Player").transform;
_zombie = gameObject;
}
void Update () {
if(CurrentHealth < 1){
if(Network.isServer){
Network.Destroy(gameObject);
}
else if(Network.isClient){
Network.Destroy(gameObject);
}
else{
Destroy(gameObject);
}
}
float dist = Vector3.Distance(Player.position, _zombie.transform.position);
PlayerController PC = Player.GetComponent();
Player PS = Player.GetComponent();
if(PS.isReloading){
MaxDistance += 2;
}
if(PC.walkingstate == WalkingState.Sneaking){
MaxDistance = 15;
}
else if(PC.CharCont.velocity.magnitude < 0.1f){
MaxDistance = 20;
}
else{
MaxDistance = 30;
}
if(dist < MaxDistance){
transform.LookAt(new Vector3(Player.transform.position.x, transform.position.y,Player.position.z));
CharacterController controller = GetComponent();
controller.SimpleMove(_zombie.transform.forward * Movespeed);
_zombie.animation.Play("ZombieWalk1");
}
}
void ApplyBulletDamage( float WeaponDamage){
CurrentHealth -= WeaponDamage;
}
}
I thought rigid bodies took care of gravity? Are you not using them?
When i use rigid body it goes through the terrain. P.S. im using a character controller to make the AI move
you need some kind of collider for that such as a box collider.
search "Basic AI Script unity3d" that script is in JS and it does not uses CharacterController and it has same variables and parameters as your script - so then physics and rigidbodies can be used.
Answer by el_rolas · Apr 06, 2013 at 04:19 AM
declare a float variable for Gravity
and try to use move instead simple move
example
moveDirection.y-=Gravity*Time.deltaTime;
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
I am getting LOW Fps, because of simple Physics. Help. 5 Answers
Enemy Ai Problem with the collider and gravity 1 Answer
Unity Best Practices for Physics + AI 1 Answer
Movement on a tube 1 Answer