- Home /
AI movement bug ("teleporting" after certain Platforms)
So , i've downloaded the 2D Platformer that unity provides , with Lerpz . I disabled all the Inputs , and character is being controlled by another script . Then i made 2 scripts . The first one is forcing the character to move through 4 waypoints which ive made , the other forces the character to jump when he finds Crates/Spheres or Gaps . While everything goes as expected , after some platforms the character starts to mix up the waypoints and "teleports" until he reaches the last waypoint . Im not quite sure what causes this problem , ive tried nearly everything.. Any help would be appreciated!Im pasting those 2 scripts i talked about , above.
WaypointScript :
 var waypoint : Transform[];
 static var speed : int = 5;
 private var currentWaypoint : int = 0;
 var player : Transform;
 private var character : CharacterController;
  private var lastPos : Vector3;
    function Start ()
 {
     character = GetComponent(CharacterController);
     lastPos = transform.position; 
 }
  
 function Update () 
 {
      // calculate displacement since last frame:
     var delta = transform.position - lastPos;
     lastPos = transform.position; // update last position
     delta.y = 0; // consider only the horizontal displacement
     // calculate the actual horizontal velocity:
     var vel = (delta.magnitude / Time.deltaTime);
     if (vel < 0.2) 
     {
         animation.CrossFade("idle"); // lower than 0.2: idle
       }
     else if (vel < 3.0)
         animation.CrossFade("run"); // between 0.2 and 3.0: walk 
     else 
     {
         animation.CrossFade("run"); // higher than 3.0: run
         }
     if(currentWaypoint < waypoint.length)
     {
         var target : Vector3 = waypoint[currentWaypoint].position;
         target.y = transform.position.y; // keep waypoint at character's height
         var moveDirection : Vector3 = (target - transform.position);
          
         if(moveDirection.magnitude < 1)
         {
         
             currentWaypoint++;
         }
         else
         {
             character.Move(moveDirection.normalized *speed * Time.deltaTime);
         }
     
 }
 }
and FindObject:
 #pragma strict
 function Start () {
 
 }
 function Update () {
    var allObjects = GameObject.FindGameObjectsWithTag("Sfaires");
     for (var child : GameObject in allObjects) {
     var dist = (transform.position - child.transform.position).magnitude;
     if (dist < 5) {
         if (child.name == "pointsphereNPC") {
             AIController.AIControls.IsJumping=true;
             PlatformerControllerNPC.jump.height=3.0;
             return;
             }
           
     }
     else AIController.AIControls.IsJumping=false;
     }
     
     var allObjects3 = GameObject.FindGameObjectsWithTag("Edges");
     for (var child3 : GameObject in allObjects3) {
     var dist3 = (transform.position - child3.transform.position).magnitude;
     if (dist3 < 2) {
         if (child3.name == "Platform - End Cap Left") {
             AIController.AIControls.IsJumping=true;
             PlatformerControllerNPC.jump.height=4.0;
             WayPointScript.speed=7;
             return;
             }
   
                     }
           else {
           
           AIController.AIControls.IsJumping=false;
     }
     }
    
         
     var allObjects2 = GameObject.FindGameObjectsWithTag("Crates");
     for (var child2 : GameObject in allObjects2) {
     var dist2 = (transform.position - child2.transform.position).magnitude;
     if (dist2 < 1) {
         if (child2.name == "CrateNPC") {
             AIController.AIControls.IsJumping=true;
             PlatformerControllerNPC.jump.height=3.0;
             return;
             }
           else AIController.AIControls.IsJumping=false;
     }
     }
         
             
                               
     
     
 }
 
Your answer
 
 
             Follow this Question
Related Questions
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Enemy controller.move script slows down and speeds up. How to get it consistent? 0 Answers
My game controls Doesn't work on certain PC 0 Answers
CharacterController NullReferenceException dispite attached to object 1 Answer
Racing Ai? long read 1 Answer
