flybehaviour.monkey2 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. Namespace mojo3d
  2. Class FlyBehaviour Extends Behaviour
  3. Method New( entity:Entity )
  4. Super.New( entity )
  5. AddInstance()
  6. End
  7. Method New( entity:Entity,fly:FlyBehaviour )
  8. Super.New( entity )
  9. Speed=fly.Speed
  10. RotSpeed=fly.RotSpeed
  11. AddInstance( fly )
  12. End
  13. [jsonify=1]
  14. Property Speed:Float()
  15. Return _speed
  16. Setter( speed:Float )
  17. _speed=speed
  18. End
  19. [jsonify=1]
  20. Property RotSpeed:Float()
  21. Return _rspeed
  22. Setter( rspeed:Float )
  23. _rspeed=rspeed
  24. End
  25. Method OnUpdate( elapsed:Float ) Override
  26. Local rspeed:=_rspeed * 60.0 * elapsed
  27. Local entity:=Entity
  28. Local view:=App.ActiveWindow
  29. If Keyboard.KeyDown( Key.Up )
  30. entity.RotateX( rspeed )
  31. Else If Keyboard.KeyDown( Key.Down )
  32. entity.RotateX( -rspeed )
  33. Endif
  34. If Keyboard.KeyDown( Key.Left )
  35. entity.RotateY( rspeed,True )
  36. Else If Keyboard.KeyDown( Key.Right )
  37. entity.RotateY( -rspeed,True )
  38. Endif
  39. If Keyboard.KeyDown( Key.A )
  40. entity.MoveZ( _speed * 60 * elapsed )
  41. Else If Keyboard.KeyDown( Key.Z )
  42. entity.MoveZ( -_speed * 60 * elapsed )
  43. Endif
  44. #If __MOBILE_TARGET__
  45. If Mouse.ButtonDown( MouseButton.Left )
  46. If Mouse.X<view.Width/3
  47. entity.RotateY( rspeed,True )
  48. Else If Mouse.X>view.Width/3*2
  49. entity.RotateY( -rspeed,True )
  50. Else
  51. entity.Move( New Vec3f( 0,0,_speed * 60 * elapsed ) )
  52. Endif
  53. Endif
  54. #endif
  55. End
  56. Private
  57. Field _speed:Float=.1
  58. Field _rspeed:Float=3.0
  59. End