暫無描述
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

joy_cam.py 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  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. bUtt = cont.sensors['buttons']
  13. reduction = 400000
  14. axisTh = 0.03
  15. #####
  16. #hard controller mappings
  17. lar_lts = 0
  18. uad_lts = 1
  19. lar_rts = 2
  20. uad_rts = 3
  21. lt = 4
  22. rt = 5
  23. a_but = 0
  24. b_but = 1
  25. x_but = 2
  26. y_but = 3
  27. l_bump = 9
  28. r_bump = 10
  29. bk_but = 4
  30. st_but = 6
  31. xb_but = 5
  32. lts_pr = 7
  33. rts_pr = 8
  34. l_dp = 13
  35. r_dp = 14
  36. u_dp = 11
  37. d_dp = 12
  38. reduction = 400000
  39. axisTh = 0.03
  40. #####
  41. #get value 0-100
  42. lLR = aXis.axisValues[lar_lts] / reduction / .082 * 100
  43. lUD = aXis.axisValues[uad_lts] / reduction / .082 * 100 - 20 / 80
  44. rLR = aXis.axisValues[lar_rts] / reduction / .082 * 100 - 20 / 80
  45. rUD = aXis.axisValues[uad_rts] / reduction / .082 * 100 - 20 / 80
  46. lTrig = aXis.axisValues[lt] / reduction / .082 * 100 - 20 / 80
  47. rTrig = aXis.axisValues[rt] / reduction / .082 * 100 - 20 / 80
  48. aBut = bUtt.getButtonStatus(a_but)
  49. bBut = bUtt.getButtonStatus(b_but)
  50. xBut = bUtt.getButtonStatus(x_but)
  51. yBut = bUtt.getButtonStatus(y_but)
  52. lBump = bUtt.getButtonStatus(l_bump)
  53. rBump = bUtt.getButtonStatus(r_bump)
  54. bkBut = bUtt.getButtonStatus(bk_but)
  55. stBut = bUtt.getButtonStatus(st_but)
  56. xbBut = bUtt.getButtonStatus(xb_but)
  57. ltsBut = bUtt.getButtonStatus(lts_pr)
  58. rtsBut = bUtt.getButtonStatus(rts_pr)
  59. ldPad = bUtt.getButtonStatus(l_dp)
  60. rdPad = bUtt.getButtonStatus(r_dp)
  61. udPad = bUtt.getButtonStatus(u_dp)
  62. ddPad = bUtt.getButtonStatus(d_dp)
  63. #####
  64. #create modified axis values
  65. if lLR < -20:
  66. lmLR = round((lLR + 20) / 80 * 100, 0)
  67. elif lLR > 20:
  68. lmLR = round((lLR - 20) / 80 * 100, 0)
  69. else: lmLR = 0
  70. if lUD > 20:
  71. lmUD = round((lUD - 20) / 80 * 100, 0)
  72. elif lUD < -20:
  73. lmUD = round((lUD + 20) / 80 * 100, 0)
  74. else: lmUD = 0
  75. if rLR < -20:
  76. rmLR = round((rLR + 20) / 80 * 100, 0)
  77. elif rLR > 20:
  78. rmLR = round((rLR - 20) / 80 * 100, 0)
  79. else: rmLR = 0
  80. if rUD > 20:
  81. rmUD = round((rUD - 20) / 80 * 100, 0)
  82. elif rUD < -20:
  83. rmUD = round((rUD + 20) / 80 * 100, 0)
  84. else: rmUD = 0
  85. if lTrig > 3:
  86. mTrig = lTrig * -1
  87. elif rTrig > 3:
  88. mTrig = rTrig
  89. else: mTrig = 0
  90. #move camera
  91. damping = .95
  92. damping2 = 1.005
  93. mult = .0005
  94. move_x = lmUD * mult
  95. move_y = lmLR * mult
  96. move_z = (mTrig * -mult) / 4
  97. rot_mult = -.00005
  98. rot_x = rmUD * rot_mult
  99. rot_y = rmLR * rot_mult
  100. if move_x == 0 and own['last_move_x'] != 0:
  101. move_x = own['last_move_x'] * damping
  102. if move_y == 0 and own['last_move_y'] != 0:
  103. move_y = own['last_move_y'] * damping
  104. move = [move_y, 0, move_x]
  105. own.applyMovement( move, True)
  106. own.applyMovement([0, 0, move_z], False)
  107. own.applyRotation([rot_x, 0, 0],True)
  108. own.applyRotation([0, 0, rot_y],False)
  109. own['lmLR'] = lmLR
  110. own['lmUD'] = lmUD
  111. own['rmLR'] = rmLR
  112. own['rmUD'] = rmUD
  113. own['mTrig'] = mTrig
  114. own['last_move_x'] = move_x
  115. own['last_move_y'] = move_y
  116. own['aBut'] = aBut
  117. own['bBut'] = bBut
  118. own['xBut'] = xBut
  119. own['yBut'] = yBut
  120. own['lBump'] = lBump
  121. own['rBump'] = rBump
  122. own['stBut'] = stBut
  123. own['bkBut'] = bkBut
  124. own['ltsBut'] = ltsBut
  125. own['rtsBut'] = rtsBut
  126. main()