Нет описания
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

joy_cam.py 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. ################################################
  2. #joystick flythrough camera for scene testing #
  3. #shuvit.org #
  4. ################################################
  5. import bge
  6. def main():
  7. #####
  8. #init
  9. cont = bge.logic.getCurrentController()
  10. own = cont.owner
  11. aXis = cont.sensors['stickDirections']
  12. reduction = 400000
  13. axisTh = 0.03
  14. #####
  15. #hard controller mappings
  16. lar_lts = 0
  17. uad_lts = 1
  18. lar_rts = 2
  19. uad_rts = 3
  20. lt = 4
  21. rt = 5
  22. a_but = 0
  23. b_but = 1
  24. x_but = 2
  25. y_but = 3
  26. l_bump = 9
  27. r_bump = 10
  28. bk_but = 4
  29. st_but = 6
  30. xb_but = 5
  31. lts_pr = 7
  32. rts_pr = 8
  33. l_dp = 13
  34. r_dp = 14
  35. u_dp = 11
  36. d_dp = 12
  37. reduction = 400000
  38. axisTh = 0.03
  39. #####
  40. #get value 0-100
  41. lLR = aXis.axisValues[lar_lts] / reduction / .082 * 100
  42. lUD = aXis.axisValues[uad_lts] / reduction / .082 * 100 - 20 / 80
  43. rLR = aXis.axisValues[lar_rts] / reduction / .082 * 100 - 20 / 80
  44. rUD = aXis.axisValues[uad_rts] / reduction / .082 * 100 - 20 / 80
  45. lTrig = aXis.axisValues[lt] / reduction / .082 * 100 - 20 / 80
  46. rTrig = aXis.axisValues[rt] / reduction / .082 * 100 - 20 / 80
  47. #####
  48. #create modified axis values
  49. if lLR < -20:
  50. lmLR = round((lLR + 20) / 80 * 100, 0)
  51. elif lLR > 20:
  52. lmLR = round((lLR - 20) / 80 * 100, 0)
  53. else: lmLR = 0
  54. if lUD > 20:
  55. lmUD = round((lUD - 20) / 80 * 100, 0)
  56. elif lUD < -20:
  57. lmUD = round((lUD + 20) / 80 * 100, 0)
  58. else: lmUD = 0
  59. if rLR < -20:
  60. rmLR = round((rLR + 20) / 80 * 100, 0)
  61. elif rLR > 20:
  62. rmLR = round((rLR - 20) / 80 * 100, 0)
  63. else: rmLR = 0
  64. if rUD > 20:
  65. rmUD = round((rUD - 20) / 80 * 100, 0)
  66. elif rUD < -20:
  67. rmUD = round((rUD + 20) / 80 * 100, 0)
  68. else: rmUD = 0
  69. if lTrig > 3:
  70. mTrig = lTrig * -1
  71. elif rTrig > 3:
  72. mTrig = rTrig
  73. else: mTrig = 0
  74. #move camera
  75. damping = .95
  76. damping2 = 1.005
  77. mult = .0005
  78. move_x = lmUD * mult
  79. move_y = lmLR * mult
  80. move_z = (mTrig * -mult) / 4
  81. rot_mult = -.00005
  82. rot_x = rmUD * rot_mult
  83. rot_y = rmLR * rot_mult
  84. if move_x == 0 and own['last_move_x'] != 0:
  85. move_x = own['last_move_x'] * damping
  86. if move_y == 0 and own['last_move_y'] != 0:
  87. move_y = own['last_move_y'] * damping
  88. move = [move_y, 0, move_x]
  89. own.applyMovement( move, True)
  90. own.applyMovement([0, 0, move_z], False)
  91. own.applyRotation([rot_x, 0, 0],True)
  92. own.applyRotation([0, 0, rot_y],False)
  93. own['lmLR'] = lmLR
  94. own['lmUD'] = lmUD
  95. own['rmLR'] = rmLR
  96. own['rmUD'] = rmUD
  97. own['mTrig'] = mTrig
  98. own['last_move_x'] = move_x
  99. own['last_move_y'] = move_y
  100. print(move_x)
  101. main()