ios - Simple collision in Sprite Kit -


i have 2 nodes. player , enemy. want enemy node follow player node once it's close enough , enemy node stop when collides player node. , enemy node goes on top of player , both nodes gets pushed. thought somehow stopping enemy node moving on collision player seems me should cleaner way.

(i move enemy node changing possition on update).

here's gamescene.sks:

character , enemy options gamescene

-(void)didmovetoview:(skview *)view {      player = [self childnodewithname:@"character"];     enemy  = [self childnodewithname:@"enemy"];     self.physicsworld.contactdelegate = self; }  -(void)touchesbegan:(nsset *)touches withevent:(uievent *)event {      (uitouch *touch in touches) {         movetotouch = [touch locationinnode:self];         sknode *tile = [self nodeatpoint:movetotouch];         if([tile.name isequaltostring:@"tile"])         {             movetotouch = tile.position;         }     } }  -(void)update:(cftimeinterval)currenttime {      [self walk:player to:movetotouch];      if((sdistancebetweenpoints(enemy.position, player.position) < 200))     {         [self walk:enemy to:player.position];     }   }  -(void)walk:(sknode*)node to:(cgpoint)moveto {     if (cgpointequaltopoint(moveto, cgpointzero))     {         return;     }       if(round(moveto.y) != round(node.position.y))     {          if(moveto.y > node.position.y)         {             node.position = cgpointmake(node.position.x,node.position.y+2);         }         else if (moveto.y < node.position.y)         {             node.position = cgpointmake(node.position.x,node.position.y-2);         }      }else if(round(moveto.x) != round(node.position.x))     {          if(moveto.x > node.position.x)         {             node.position = cgpointmake(node.position.x+2,node.position.y);         }         else if (moveto.x < node.position.x)         {             node.position = cgpointmake(node.position.x-2,node.position.y);         }      }      float distance = sdistancebetweenpoints(node.position, moveto);     if (distance < 1.0){         movetotouch = cgpointzero;     }  } 

i don't know how have set enemy follows player. try

  • set enemy dynamic false
  • or put velocity 0

use collision detection know when collided.


Comments

Popular posts from this blog

javascript - Slick Slider width recalculation -

jsf - PrimeFaces Datatable - What is f:facet actually doing? -

angular2 services - Angular 2 RC 4 Http post not firing -