| 赞 | 0 |
| VIP | 0 |
| 好人卡 | 0 |
| 积分 | 1 |
| 经验 | 26060 |
| 最后登录 | 2019-2-13 |
| 在线时间 | 9 小时 |
Lv1.梦旅人 殇
- 梦石
- 0
- 星屑
- 55
- 在线时间
- 9 小时
- 注册时间
- 2006-4-26
- 帖子
- 444
|
以下引用索尔迦·蓝于2007-8-17 21:42:07的发言:
以下引用冰鸷殛霰于2007-8-17 21:34:25的发言:
晕啊!
我是用的仓库提取的事件......不一样么?
当然不一样了。
夜想曲是在
def update_actor_attk
# C按下时
if ((Kboard.trigger?($R_Key_SPACE) or Kboard.trigger?($R_Key_RETURN)) or S[1])and @actor_atktime <= 0
if @actor.weapon_id.between?(50, 65) # and $data_weapons[@actor.weapon_id].rang >= 1
new_x = @x + (@d == 6 ? 1 : @d == 4 ? -1 : 0)
new_y = @y + (@d == 2 ? 1 : @d == 8 ? -1 : 0)
event = $game_map.events[$game_map.check_event(new_x,new_y)]
return if !event.nil? and !event.is_enemy?
rang_atk#(@actor.animation1_id)
return
end
new_x = @x + (@d == 6 ? 1 : @d == 4 ? -1 : 0)
new_y = @y + (@d == 2 ? 1 : @d == 8 ? -1 : 0)
event = $game_map.events[$game_map.check_event(new_x,new_y)]
if !event.nil? and event.maxhp > 0 and @actor_atktime <= 0
@attev = event
dagame_acon(event,event_damage(@actor, event),@actor.animation2_id)
end
end
end
这里判定是否为远程攻击,如果是,则使用rang_atk方法
def rang_atk
bullet = ARPG_Bullet.new("Arrow", @x, @y, @d)
$scene.spriteset.add_bullet(bullet)
@bullets.push(bullet)
@actor_atktime = $data_weapons[@actor.weapon_id].time
end
子弹是一个ARPG_Bullet对象。
class ARPG_Bullet < Game_Character
本质上就是一个Event,比event底层一些,是角色活动块一类的冬冬
这个子弹的刷新在这里
def update_bullet
for bullet in @bullets
bullet.update
case bullet.hit_event
when String
if bullet.opacity <= 10
$scene.spriteset.delete_bullet(bullet)
@bullets.delete(bullet)
end
when Game_Event
event = bullet.hit_event
next if !event.is_enemy?
@attev = event
dagame_acon(event,event_damage(@actor, event),@actor.animation2_id)
$scene.spriteset.delete_bullet(bullet)
@bullets.delete(bullet)
end
end
end
最后使用delete删除这个活动块。
总而言之就是特地为它的ARPG系统设计的一个远程攻击系统,你可以参考这个思路写自己的ARPG系统。
如果要想流畅刷新的话还是用脚本来写吧,事件的功能是很有限的。
能给这些脚本都打上注释么?
|
|