赞 | 677 |
VIP | 62 |
好人卡 | 144 |
积分 | 337 |
经验 | 110435 |
最后登录 | 2024-11-1 |
在线时间 | 5108 小时 |
Lv5.捕梦者
- 梦石
- 0
- 星屑
- 33682
- 在线时间
- 5108 小时
- 注册时间
- 2012-11-19
- 帖子
- 4878
|
LZ这个这个问题理论上不复杂,做起来也不算复杂,但是很繁琐。
LZ的每张行走图需要“拿上”所装备的武器,
我的思路是:
1,给角色增加2个实例变量,这2个实例变量用来确定武器图片显示的位置。
如果行走图改变,实例变量也跟着改变,并且在行走时,实例变量也跟着改变,达到行走时武器也在动的效果。
2,建立一个储存所有角色行走图所有帧“拿”武器位置的哈希表,用来对应改变上面 1 里的 2个实例变量。
哈希表储存该行走图每帧“拿”武器的位置,比如用“手”拿,就把行走图每帧基于左上角(0, 0)的位置
开始,到“手”部位的X距离和Y距离。比如一张名为“actor1”的行走图,测量下来储存数据为:
哈希表 = {"actor1" => {“00”=>[30, 21], "01" => [32, 22],,,,,,,},,,,,,,}
子哈希表里的“00”,“01”,,,表示角色的朝向和动作时的图形,在判断时可以:
actor.direction.to_s + actor.pattern.to_s 或 "#{actor.direction}#{actor.pattern.to_s}" (XP用语)
这就是当前角色在行走图中的图形,集合成字符串方便哈希表的储存和读取。
中括号里的两个数值,是LZ测量该帧图形“手”部位置,第一个X距离,第二个Y距离。
3,每个武器行走图以及每帧要统一,比如武器“把手”位置全在左上角或右上角,方便武器坐标的判断。
在角色的刷新中,随时判断角色当前的朝向和图形,根据朝向和图形取得 哈希表 里想对应的数值赋值
给第一步中角色的2个实例变量;然后在角色的Sprite里,根据该角色的画面X坐标和画面Y坐标,以及
角色的2个新增实例变量,来显示武器行走图。 |
|