设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2442|回复: 9
打印 上一主题 下一主题

[已经解决] 请教两个关于角色行走的问题~

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2010-6-30
帖子
20
跳转到指定楼层
1
发表于 2010-7-1 01:43:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
1、关于全按键调用脚本的使用。先在MAIN前插入全按键调用脚本,然后把RM自带的Game_Player脚本第212~222行改成
if Kboard.press?($S)
   move_down
elsif Kboard.press?($A)
   move_left
elsif Kboard.press?($D)
   move_right
elsif Kboard.press?($W)
   move_up
  end
end
这样就能用WSAD控制角色了…但是出现个问题:
原来用方向键控制角色时四个方向键没有优先级排序;但是这种方法改成WSAD按键时就出现优先级了,角色向四个方向运动的优先顺序变成下、左、右、上(既SADW,跟脚本里输入的按键顺序一样了),为什么会这样?高人指点下啊~~
(PS:我说的优先级意思是:按W-向下走,同时按WA-还是向下,按A向左走一段距离后不松开再按下W-忽略A向下走了…另外两个优先级更低的DW就不用说了= =#...纠结!)


2、怎样能让角色只移动半格?(看着XP的角色行走图- -貌似不可能走半格的说……)

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2010-2-4
帖子
1305
2
发表于 2010-7-1 03:43:29 | 只看该作者
本帖最后由 zhangbanxian 于 2010-7-1 03:51 编辑

第一个问题,这样改改看(不知道和你用的是不是一个全键盘)
  1.     if Kboard.keyb($S)== 1
  2.         move_down
  3.      end
  4.      if Kboard.keyb($A) == 1
  5.         move_left
  6.      end
  7.      if Kboard.keyb($D) == 1
  8.         move_right
  9.      end
  10.      if Kboard.keyb($W) == 1
  11.         move_up
  12.      end
复制代码
第二个问题用论坛搜索
好歹当年也当过大魔王过,orz
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2010-6-30
帖子
20
3
 楼主| 发表于 2010-7-1 11:38:10 | 只看该作者
回复 zhangbanxian 的帖子能把你的全键盘给我吗?


   
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2010-2-4
帖子
1305
4
发表于 2010-7-1 12:23:26 | 只看该作者
回复 能把你的全键盘给我吗?
弦上の舞 发表于 2010-7-1 11:38
  1. #============================================================================

  2. module Kboard
  3. #==========================================================================
  4. # 以下是全鍵盤按鍵列表
  5. #------------------------------------
  6. $Rmouse_BUTTON_L = 0x01 # left mouse button
  7. $Rmouse_BUTTON_R = 0x02 # right mouse button
  8. $Rmouse_BUTTON_M = 0x04 # middle mouse button
  9. $Rmouse_BUTTON_4 = 0x05 # 4th mouse button
  10. $Rmouse_BUTTON_5 = 0x06 # 5th mouse button
  11. #------------------------------------
  12. $R_Key_BACK = 0x08 # BACKSPACE key
  13. $R_Key_TAB = 0x09 # TAB key
  14. $R_Key_RETURN = 0x0D # ENTER key
  15. $R_Key_SHIFT = 0x10 # SHIFT key
  16. $R_Key_CTLR = 0x11 # CTLR key
  17. $R_Key_ALT = 0x12 # ALT key
  18. $R_Key_PAUSE = 0x13 # PAUSE key
  19. $R_Key_CAPITAL = 0x14 # CAPS LOCK key
  20. $R_Key_ESCAPE = 0x1B # ESC key
  21. $R_Key_SPACE = 0x20 # SPACEBAR
  22. $R_Key_PRIOR = 0x21 # PAGE UP key
  23. $R_Key_NEXT = 0x22 # PAGE DOWN key
  24. $R_Key_END = 0x23 # END key
  25. $R_Key_HOME = 0x24 # HOME key
  26. $R_Key_LEFT = 0x25 # LEFT ARROW key
  27. $R_Key_UP = 0x26 # UP ARROW key
  28. $R_Key_RIGHT = 0x27 # RIGHT ARROW key
  29. $R_Key_DOWN = 0x28 # DOWN ARROW key
  30. $R_Key_SELECT = 0x29 # SELECT key
  31. $R_Key_PRINT = 0x2A # PRINT key
  32. $R_Key_SNAPSHOT = 0x2C # PRINT SCREEN key
  33. $R_Key_INSERT = 0x2D # INS key
  34. $R_Key_DELETE = 0x2E # DEL key
  35. #------------------------------------
  36. $R_Key_0 = 0x30 # 0 key
  37. $R_Key_1 = 0x31 # 1 key
  38. $R_Key_2 = 0x32 # 2 key
  39. $R_Key_3 = 0x33 # 3 key
  40. $R_Key_4 = 0x34 # 4 key
  41. $R_Key_5 = 0x35 # 5 key
  42. $R_Key_6 = 0x36 # 6 key
  43. $R_Key_7 = 0x37 # 7 key
  44. $R_Key_8 = 0x38 # 8 key
  45. $R_Key_9 = 0x39 # 9 key
  46. #------------------------------------
  47. $R_Key_A = 0x41 # A key
  48. $R_Key_B = 0x42 # B key
  49. $R_Key_C = 0x43 # C key
  50. $R_Key_D = 0x44 # D key
  51. $R_Key_E = 0x45 # E key
  52. $R_Key_F = 0x46 # F key
  53. $R_Key_G = 0x47 # G key
  54. $R_Key_H = 0x48 # H key
  55. $R_Key_I = 0x49 # I key
  56. $R_Key_J = 0x4A # J key
  57. $R_Key_K = 0x4B # K key
  58. $R_Key_L = 0x4C # L key
  59. $R_Key_M = 0x4D # M key
  60. $R_Key_N = 0x4E # N key
  61. $R_Key_O = 0x4F # O key
  62. $R_Key_P = 0x50 # P key
  63. $R_Key_Q = 0x51 # Q key
  64. $R_Key_R = 0x52 # R key
  65. $R_Key_S = 0x53 # S key
  66. $R_Key_T = 0x54 # T key
  67. $R_Key_U = 0x55 # U key
  68. $R_Key_V = 0x56 # V key
  69. $R_Key_W = 0x57 # W key
  70. $R_Key_X = 0x58 # X key
  71. $R_Key_Y = 0x59 # Y key
  72. $R_Key_Z = 0x5A # Z key
  73. #------------------------------------
  74. $R_Key_LWIN = 0x5B # Left Windows key (Microsoft Natural keyboard)
  75. $R_Key_RWIN = 0x5C # Right Windows key (Natural keyboard)
  76. $R_Key_APPS = 0x5D # Applications key (Natural keyboard)
  77. #------------------------------------
  78. $R_Key_NUMPAD0 = 0x60 # Numeric keypad 0 key
  79. $R_Key_NUMPAD1 = 0x61 # Numeric keypad 1 key
  80. $R_Key_NUMPAD2 = 0x62 # Numeric keypad 2 key
  81. $R_Key_NUMPAD3 = 0x63 # Numeric keypad 3 key
  82. $R_Key_NUMPAD4 = 0x64 # Numeric keypad 4 key
  83. $R_Key_NUMPAD5 = 0x65 # Numeric keypad 5 key
  84. $R_Key_NUMPAD6 = 0x66 # Numeric keypad 6 key
  85. $R_Key_NUMPAD7 = 0x67 # Numeric keypad 7 key
  86. $R_Key_NUMPAD8 = 0x68 # Numeric keypad 8 key
  87. $R_Key_NUMPAD9 = 0x69 # Numeric keypad 9 key
  88. $R_Key_MULTIPLY = 0x6A # Multiply key (*)
  89. $R_Key_ADD = 0x6B # Add key (+)
  90. $R_Key_SEPARATOR = 0x6C # Separator key
  91. $R_Key_SUBTRACT = 0x6D # Subtract key (-)
  92. $R_Key_DECIMAL = 0x6E # Decimal key
  93. $R_Key_DIVIDE = 0x6F # Divide key (/)
  94. #------------------------------------
  95. $R_Key_F1 = 0x70 # F1 key
  96. $R_Key_F2 = 0x71 # F2 key
  97. $R_Key_F3 = 0x72 # F3 key
  98. $R_Key_F4 = 0x73 # F4 key
  99. $R_Key_F5 = 0x74 # F5 key
  100. $R_Key_F6 = 0x75 # F6 key
  101. $R_Key_F7 = 0x76 # F7 key
  102. $R_Key_F8 = 0x77 # F8 key
  103. $R_Key_F9 = 0x78 # F9 key
  104. $R_Key_F10 = 0x79 # F10 key
  105. $R_Key_F11 = 0x7A # F11 key
  106. $R_Key_F12 = 0x7B # F12 key
  107. #------------------------------------
  108. $R_Key_NUMLOCK = 0x90 # NUM LOCK key
  109. $R_Key_SCROLL = 0x91 # SCROLL LOCK key
  110. #------------------------------------
  111. $R_Key_LSHIFT = 0xA0 # Left SHIFT key
  112. $R_Key_RSHIFT = 0xA1 # Right SHIFT key
  113. $R_Key_LCONTROL = 0xA2 # Left CONTROL key
  114. $R_Key_RCONTROL = 0xA3 # Right CONTROL key
  115. $R_Key_L_ALT = 0xA4 # Left ALT key
  116. $R_Key_R_ALT = 0xA5 # Right ALT key
  117. #------------------------------------
  118. $R_Key_SEP = 0xBC # , key
  119. $R_Key_DASH = 0xBD # - key
  120. $R_Key_DOTT = 0xBE # . Key
  121. #------------------------------------
  122. GetKeyState = Win32API.new("user32","GetAsyncKeyState",['I'],'I')
  123. GetKeyboardState = Win32API.new("user32","GetKeyState",['I'],'I')
  124. GetSetKeyState = Win32API.new("user32","SetKeyboardState",['I'],'I')
  125. #------------------------------------
  126. module_function
  127. #------------------------------------
  128. def keyb(rkey)
  129. if GetKeyState.call(rkey) != 0
  130. return 1
  131. end
  132. return 0
  133. end
  134. #------------------------------------
  135. def keyboard(rkey)
  136. GetKeyState.call(rkey) & 0x01 == 1 #
  137. end
  138. #------------------------------------
  139. def key(rkey, key = 0)
  140. GetKeyboardState.call(rkey) & 0x01 == key #
  141. end
  142. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2010-6-30
帖子
20
5
 楼主| 发表于 2010-7-1 13:14:26 | 只看该作者
回复 zhangbanxian 的帖子全按键的130行出现TypeError。。。前面那个是从212行开始改吗?还得在最后加个end?


   
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2010-2-4
帖子
1305
6
发表于 2010-7-1 15:15:44 | 只看该作者
回复 弦上の舞 的帖子
这样写,前面是我根据你的写法改的。
  1. if Kboard.keyb(0x53)== 1
  2.         move_down
  3.      end
  4.      if Kboard.keyb(0x41) == 1
  5.         move_left
  6.      end
  7.      if Kboard.keyb(0x44) == 1
  8.         move_right
  9.      end
  10.      if Kboard.keyb(0x57) == 1
  11.         move_up
  12.      end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2010-6-30
帖子
20
7
 楼主| 发表于 2010-7-1 15:47:08 | 只看该作者
回复 zhangbanxian 的帖子- -#...咱真是失败……  这样吧,你做个最简单的工程,就用WSAD控制方向的,发我邮箱里呗?[email protected]                    咱是新手,万分感谢!!!!~


   
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2010-2-4
帖子
1305
8
发表于 2010-7-1 16:05:18 | 只看该作者
本帖最后由 zhangbanxian 于 2010-7-1 16:12 编辑
回复 - -#...咱真是失败……  这样吧,你做个最简单的工程,就用WSAD控制方向的,发我邮箱里呗?           ...
弦上の舞 发表于 2010-7-1 15:47
按理说应该不是全键盘脚本的问题,lz的写法貌似是elsif自然会有优先 Project2.rar (187.45 KB, 下载次数: 130)

评分

参与人数 1星屑 +400 收起 理由
「旅」 + 400 认可答案

查看全部评分

好歹当年也当过大魔王过,orz
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3121
在线时间
1534 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

9
发表于 2010-7-1 16:25:59 | 只看该作者
4个全加上不够,注意Game_Character里除了move_4个方向以外还有别的方法哦~
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2010-6-30
帖子
20
10
 楼主| 发表于 2010-7-1 20:51:01 | 只看该作者
谢谢各位啦,还附带个八方向的- -...我要去好好研究研究,嘿嘿~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-9 11:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表