- 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