a little box2d help

Previous topic - Next topic

djtoon

hi
im making a top down game where enemys try to catch you
there is the code for enemy movement:

Code (glbasic) Select


FUNCTION enemyMove:
LOCAL pi = 3.14159265

FOR x=0 TO LEN(enemysFleet[])-1 STEP 1



//calculate distance between follower and target
    LOCAL distanceX = (b_BodyGetPosX(tmpObjxx)-b_BodyGetPosX(enemysFleet[x].obj))
    LOCAL distanceY = (b_BodyGetPosY(tmpObjxx)-b_BodyGetPosY(enemysFleet[x].obj))

    LOCAL  distanceTotal = SQR(distanceX*distanceX+distanceY*distanceY);

  IF distanceTotal <= 80000
LOCAL moveX=enemysFleet[x].turnRate*distanceX/distanceTotal
LOCAL moveY=enemysFleet[x].turnRate*distanceY/distanceTotal


//
LOCAL totalmove = SQR(moveX * moveX + moveY * moveY)
//
moveX = enemysFleet[x].speed * moveX / totalmove;
moveY = enemysFleet[x].speed * moveY / totalmove;
//



// b_moveObject( enemysFleet[x].obj,b_BodyGetPosX(enemysFleet[x].obj)+moveX,b_BodyGetPosY(enemysFleet[x].obj)+moveY,0)
//b_BodySetAngle(enemysFleet[x].obj,-angleInRadians);


LOCAL angleInRadians = ATAN(moveX, moveY);
LOCAL andleInDegrees  = angleInRadians * (180 / pi);



LOCAL velocityX =  SIN (   b_BodyGetAngle(enemysFleet[x].obj))*enemysFleet[x].speed
LOCAL velocityY = COS (   b_BodyGetAngle(enemysFleet[x].obj))*enemysFleet[x].speed
//




b_SetLinearVelocity(enemysFleet[x].obj,velocityX,velocityY);



IF enemysFleet[x].mission="attack"


b_ApplyTorque(enemysFleet[x].obj,b_BodyGetAngle(enemysFleet[x].obj)-angleInRadians);
b_SetLinearVelocity(enemysFleet[x].obj,velocityX,velocityY);






ELSEIF enemysFleet[x].mission="run"
b_SetLinearVelocity(enemysFleet[x].obj,-velocityX,-velocityY);

ENDIF


ENDIF






NEXT
ENDFUNCTION
////


i cant seem to get the enemy's to turn at you with difrent turn rates

any ideas?

10x

Slydog

Could you edit your post and put your code inside a code block?
It's the button with the '#'.

It looks like something converted some code characters into little squares.
My current project (WIP) :: TwistedMaze <<  [Updated: 2015-11-25]