;3D-RAD-Beispiel

;Variable-Deklaration
.
.
.
;Konstanten festlegen:

Health=2048
EnginePower=8000
MaxSteer=50
LowSoundRate=2000
HighSoundRate=5000

;Implementierung:

if Health>0
  velocity_update(Tank);

  ;Steuerung vor, zurck, links, rechts:
  if keyboard(up)=-1
    thrust_xz(tank,enginepower)
  endif
  if keyboard(down)=-1	
    thrust_xz(tank,-enginepower)
  endif
  friction_xz(tank,490) ;tank rollt aus 
  if keyboard(left)=-1
    steerangle=steerangle+1.5dg
  else
    if keyboard(right)=-1
      steerangle=steerangle-1.5dg
    else
      ;perform auto returning effect
      steerangle=factor_512(steerangle,300)
    endif
  endif
  steerangle(limit(steerangle,-maxsteer,maxsteer)
  steer(element,steerangle,1) ;perform the steering
  
  ;Waffenkontrolle
  if(keyboard(fire)=-1
    if timer(tank)>5 ;fire frequency in x/30 s
      timer_set(tank,0)
      signal_set(tank,1) ;activation code
    endif
  else
    signal_reset(tank,1) ;stop weapon 
  endif
  
  ;Kollision mit Waffen (ID# 2)
  ;die Explosion steht im Script der Waffe 
  if collision(tank,2)>0
    health=health-512
  endif

  ;Kollision mit Hindernissen und Szenen-Begrenzung
  if collision(tank,-3)>0
    temp=nearest_element(tank,-3)
    if temp>0
      velocity_set(tank,0) ; tank stoppt
      attract(tank,temp,-enginepower) ;tank prallt zurck
    endif
  endif    
  volume_rebound(tank,0,cyltop,cylbot) ;prallt gegen                           
                                       ;szenenbegrenzung
  ;tank folgt dem terrain und rutscht mit 0,5 m/s 
  over_ground_slope(tank,y-offset,0,5ms)   

  ;engine sound
  temp=velocity(tank)
  temp=interpolate(temp,0,255,LowSoundRate,HighSoundRate)
  samplerate_set(tank,temp)

else

  ;Tank explodiert nach dem 4. Treffer 
  position_copy(Tank,Explo)
  on (Explo)
  off(Tank)
endif


