Hello. This is my current Zombie AI but it just going through walls and fly. How can i fix this ?

var target : Transform; //the enemy's target
var moveSpeed = 3; //move speed
var rotationSpeed = 3; //speed of turning
var attackThreshold = 1.5; // distance within which to attack
var chaseThreshold = 10; // distance within which to start chasing
var giveUpThreshold = 20; // distance beyond which AI gives up
var attackRepeatTime = 1; // delay between attacks when within range

private var chasing = false;
private var attackTime = Time.time;

var myTransform : Transform; //current transform data of this enemy

function Awake()
    myTransform = transform; //cache transform data for easy access/preformance 

function Start()
     target = GameObject.FindWithTag("Player").transform; //target the player

function Update (){    
    // check distance to target every frame:
    var distance = (target.position - myTransform.position).magnitude;

    if (chasing) {    
        //rotate to look at the player
        myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
        Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);

        //move towards the player
        myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;

        // give up, if too far away from target:
        if (distance > giveUpThreshold)
            chasing = false;

        // attack, if close enough, and if time is OK:
        if (distance < attackThreshold && Time.time > attackRepeatTime) {
            // Attack! (call whatever attack function you like here)
        if (distance < attackThreshold) {
            //stop when close enough

            attackTime = Time.time+ attackRepeatTime;

    else {
        // not currently chasing.

        // start chasing if target comes close enough
        if (distance < chaseThreshold) {
            chasing = true;

function OnTriggerEnter (other: Collider) {
    if (other.gameObject.CompareTag("Bullet")){

Please Help


more ▼

asked Jun 24, 2012 at 04:52 PM

SLIMEBASS gravatar image

107 21 26 31

(comments are locked)
10|3000 characters needed characters left

2 answers: sort voted first

Modifications of transform.position do not apply with physic. You need to use a character controller or a rigidbody, then move it with Move or AddForce.

more ▼

answered Jun 24, 2012 at 06:30 PM

Berenger gravatar image

12.8k 39 42 87

This is maby an stupid question.. But can u edit the script so its work with rigidbody please? :) Im new to Scripting :D WOULD BE AWESOME


Jun 25, 2012 at 12:44 PM SLIMEBASS

The only relevant part is

//move towards the player
myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime

which should be

//move towards the player
myRigidbody.AddForce( myTransform.forward * moveSpeed * Time.deltaTime );
Jun 25, 2012 at 03:02 PM Berenger

im attempting to use this script and i get the error: Unknown identifier: 'myRigidbody'. Do I need to define it somewhere else or change other parts of the script? thanks.

Jul 31, 2013 at 07:26 PM oj1999
(comments are locked)
10|3000 characters needed characters left

Add a collider to your zombie, a capsule collider would be a good one. This will stop them from going through the wall, and if this happened, it'll stop him from going through you!

more ▼

answered Mar 12 at 08:31 AM

Dudejosh0973 gravatar image

0 1

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here



Answers and Comments



asked: Jun 24, 2012 at 04:52 PM

Seen: 5650 times

Last Updated: Mar 12 at 08:31 AM