Seite 1 von 1

Blickrichtung gegner / spieler problem (Rotation)

Verfasst: 22.03.2015 16:22
von True29
folgendende prozedur KI_DIRECTION_PLAYER soll mir eigentlich nur sagen ob der gegner in richtung spieler schaut mit abweichung von +- 90°.
anscheinend ist hier irgendwo ein fehler funktioniert leider nicht ;(
vielleicht kann da mal wer drüberschauen ?
danke.

Code: Alles auswählen

EnableExplicit

Structure Struct_Player
  rotation.f
  Position.point
EndStructure


Global spieler1.Struct_Player
Define enemy.Struct_Player

Procedure KI_FIND_PLAYER(*Enemyplayer.Struct_Player)
  ;// return degree      
    ProcedureReturn Degree(ATan2(spieler1\Position\x-*Enemyplayer\Position\x,spieler1\Position\y-*Enemyplayer\Position\y)) 
EndProcedure

;// RETURN DIF KI PLAYER TO SEE IF KI WALK TO PLAYER
Procedure KI_DIRECTION_PLAYER(*Enemyplayer.Struct_Player)
  
  Debug "----"
  Debug "enemy" + *Enemyplayer\Rotation
  Debug "player" + KI_FIND_PLAYER(*Enemyplayer)
  
  If (*Enemyplayer\Rotation > KI_FIND_PLAYER(*Enemyplayer) And *Enemyplayer\Rotation+90 < KI_FIND_PLAYER(*Enemyplayer)) Or
     (*Enemyplayer\Rotation < KI_FIND_PLAYER(*Enemyplayer) And *Enemyplayer\Rotation-90 > KI_FIND_PLAYER(*Enemyplayer))
    ProcedureReturn #True  
  EndIf    
  
ProcedureReturn #False
EndProcedure


enemy\rotation = 60
enemy\Position\x = 10
enemy\Position\y = 10

spieler1\rotation = 0
spieler1\Position\x = 20
spieler1\Position\y = 30

Debug KI_DIRECTION_PLAYER(enemy)

Re: Blickrichtung gegner / spieler problem (Rotation)

Verfasst: 22.03.2015 18:42
von True29
ok , abfrage war falsch formuliert :(
nun klappts.

Code: Alles auswählen

  If *Enemyplayer\rotation < KI_FIND_PLAYER(*Enemyplayer) "
    If *Enemyplayer\rotation + 60 >= KI_FIND_PLAYER(*Enemyplayer)           
      ProcedureReturn #True  
    EndIf
  EndIf