Why is this moving backwards?

Hi, I’m testing something but for some reason the AI is moving backwards? This is a webplayer of the problem.

Here is my code:

#pragma strict

var target : Transform; 
var isvisible : boolean;
var obj : Transform;

var speed : int;

//var forward : int
var controller : CharacterController;
function Start (){
controller = obj.gameObject.GetComponent(CharacterController);
}
function Update() {

    obj.LookAt(target);
    obj.rotation.x = 0;
    obj.rotation.z = 0;
        
  if(isvisible == false)
  {
     //obj.Translate(Vector3.forward * speed * Time.deltaTime);
     controller.SimpleMove(Vector3.forward * speed);
  }
}

function OnBecameVisible () {
        isvisible = true;
}

function OnBecameInvisible (){
        isvisible = false;
}

this code is attached to the sprite that is child to a gameobject with the character controller.

Sometimes it seems to go forward and then backwards… any ideas? I have tried going -Vector3.forward.

Fixed :slight_smile:

#pragma strict

var target : Transform; 
var isvisible : boolean;
var obj : Transform;

var speed : int;

//var forward : int
var controller : CharacterController;
var forward : Vector3;
var jump : Quaternion;

function Start (){
controller = obj.gameObject.GetComponent(CharacterController);
}
function Update() 
{
  jump = Camera.main.transform.rotation;
    obj.LookAt(target);
    obj.rotation.x = 0;
    obj.rotation.z = 0;
  if(isvisible == false)
  {
     //obj.Translate(Vector3.forward * speed * Time.deltaTime);
     forward = obj.TransformDirection(Vector3.forward);
     controller.SimpleMove(forward * speed);
  }
}

function OnBecameVisible () {
        isvisible = true;
}

function OnBecameInvisible (){
        isvisible = false;
}
controller.SimpleMove(transform.forward * Time.deltaTime * speed);

Thanks dude, this is what I ended up with:

controller.SimpleMove(obj.forward * Time.deltaTime * speed);