Blickrichtung gegner / spieler problem (Rotation)

Für allgemeine Fragen zur Programmierung mit PureBasic.
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Blickrichtung gegner / spieler problem (Rotation)

Beitrag 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)
i7,12gb ram , Windows 10 ,Purebasic 5.50
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Re: Blickrichtung gegner / spieler problem (Rotation)

Beitrag 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  
i7,12gb ram , Windows 10 ,Purebasic 5.50
Antworten