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

Project1

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

[已经解决] 用事件或者脚本控制地图中 待机 移动 跑动(高速跑动)

[复制链接]

Lv5.捕梦者

梦石
0
星屑
36322
在线时间
10774 小时
注册时间
2009-3-15
帖子
4813
1
发表于 2016-9-23 12:43:04 | 显示全部楼层
RUBY 代码复制
  1. # A ボタンが押された場合
  2.     if Input.press?(Input::A) and not $ud_ok
  3.       @twojump = 1 if @twojump == 0 and down1(((@x * 128 + @revise_x) / 128.0).round,
  4.       ((@y * 128 + @revise_y) / 128.0).round, 5, true)
  5.       if (not @apassed) and @twojump <= $airjump
  6.         @apassed = true
  7.         @jumpnow = JUMPMAX
  8.         se_name = @twojump == 1 ? "ACT 跳02.wav" : "ACT 跳01.wav"
  9.         Audio.se_play("Audio/SE/#{se_name}")
  10.         @twojump += 1
  11.       else
  12.         @jumpnow += 3        
  13.       end
  14.     else
  15.       @apassed = false
  16.     end
  17. #----------------------自由落体--------------------------------
  18. if not $ud_ok
  19.       @jumpnow -= 10
  20.       if @jumpnow < 0
  21.         $game_variables[1] = @jumpnow
  22.         #$game_switches[1] = true
  23.         @character_name = "主角ACT12下落" if $game_switches[1] != true
  24.         @jumpnow = [@jumpnow, -JUMPMAX].max
  25.         if not down1(((@x * 128 + @revise_x) / 128.0).round,
  26.           ((@y * 128 + @revise_y) / 128.0).round, -@jumpnow, true)
  27.           @jumpnow = 0
  28.           @twojump = 0
  29.           @character_name = "主角 行走 长袖" if $game_switches[1] != true
  30.           #$game_switches[1] = false
  31.         end
  32.       elsif @jumpnow > 0
  33.         @character_name = @twojump == 1 ? "主角 ACT用跳跃" : "主角ACT11两段跳"
  34.         @jumpnow = [@jumpnow, JUMPMAX].min
  35.         if not up1(((@x * 128 + @revise_x) / 128.0).round,
  36.           ((@y * 128 + @revise_y) / 128.0).round, @jumpnow, true)
  37.           @jumpnow = 0
  38.         end
  39.       end
  40.     end

点评

家里机子没最新的备份,只好等明天去单位再试了。  发表于 2016-10-14 08:27
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36322
在线时间
10774 小时
注册时间
2009-3-15
帖子
4813
2
发表于 2016-9-23 13:16:02 | 显示全部楼层
本帖最后由 soulsaga 于 2016-9-23 13:18 编辑

要事件能控制3种行走类型?

点评

语言描述是。当键上下左右按下时候判断变量为1更改图像为行走,当按着上下左右的同时按着空格 变量为2 更改为跑动。不按键或者按键弹起为待机  发表于 2016-9-23 14:01
按键操作变量再判断变量更改?  发表于 2016-9-23 13:59
嗯,有办法吗?把状态化为变量再判断是否有按键?  发表于 2016-9-23 13:34
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36322
在线时间
10774 小时
注册时间
2009-3-15
帖子
4813
3
发表于 2016-10-8 14:41:24 | 显示全部楼层
本帖最后由 soulsaga 于 2016-10-8 15:41 编辑

这么久了还没有大神帮忙解決么..

话说很难理解呢..在重力脚地图用上面的事件会出现什么情況?
或且说在重力脚本地图对话时角色图像是怎样的情況?
是速度改变无效还是图像改变无效?

  1. $ud_ok = true #上下失效
  2. $airjump = 1  #空中连跳
  3. #用插入脚本暂时来消除重力系统bug,就是这个 $ud_ok = true/false
  4. #==============================================================================
  5. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  6. #==============================================================================

  7. # ————————————————————————————————————
  8. # 全方向ドット移動 Ver ε
  9. # 配布元・サポートURL
  10. # [url]http://members.jcom.home.ne.jp/cogwheel/[/url]

  11. #==============================================================================
  12. # ■ Game_Player
  13. #------------------------------------------------------------------------------
  14. #  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
  15. # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
  16. #==============================================================================
  17. class Game_Player < Game_Character
  18.   #--------------------------------------------------------------------------
  19.   # ● 定数
  20.   #--------------------------------------------------------------------------
  21.   UP    = 48                  # 上方向の余裕(0 < UP < 63)
  22.   DOWN  = -5                  # 这个是垂直方向微调 下方向の余裕(0 < DOWN <63)
  23.   SIDE  = 32                  # 左右方向の余裕(0 < SIDE <63)
  24.   SLANT = false               # 移動ルートの斜め移動時、速度修正
  25.   JUMPMAX = 100              
  26.   JUMPADD = 10              
  27.   #--------------------------------------------------------------------------
  28.   # ● 公開インスタンス変数
  29.   #--------------------------------------------------------------------------
  30.   attr_reader   :event                    # イベント時移動速度
  31.   attr_accessor :move_speed               # 移動速度
  32.   #--------------------------------------------------------------------------
  33.   # ● フレーム更新
  34.   #--------------------------------------------------------------------------
  35.   alias :update_original :update
  36.   def update
  37.     @data_count -= 1 if @data_count and @data_count > 0
  38.     # @walk:歩行速度 @dash:ダッシュ時移動速度
  39.     # @event:イベント時移動速度(0の時は、イベント時に速度変更をしない)
  40.     [url=home.php?mod=space&uid=348285]@walk[/url]  = 4
  41.     [url=home.php?mod=space&uid=81012]@Dash[/url]  = 5
  42.     @event = 4
  43.     @event = 5 if $game_variables[88] == 1 #88号变量为判断是否事件移动速度是否跑动
  44.     #==============================================================================
  45. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  46. #==============================================================================
复制代码

点评

42、43改为@walk=4 @Dash=5  发表于 2016-10-11 08:54
不懂啊,我完全是脚本盲  发表于 2016-10-10 15:21
意思是座标在一定以上(16像素以上)事件並不会执行?  发表于 2016-10-10 14:54
我在日站看到这个脚本的说明座標が一定以上(16ドット以上)ずれた状態ではイベントは開始しません 不知有没关系?  发表于 2016-10-10 14:53
直接事件并行处理无效,不能切换跑步动作与待机动作。  发表于 2016-10-9 10:55
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36322
在线时间
10774 小时
注册时间
2009-3-15
帖子
4813
4
发表于 2016-10-10 20:16:44 | 显示全部楼层
本帖最后由 soulsaga 于 2016-10-10 20:53 编辑

不知为何我测试没问题呢..
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36322
在线时间
10774 小时
注册时间
2009-3-15
帖子
4813
5
发表于 2016-10-12 14:56:39 | 显示全部楼层
本帖最后由 soulsaga 于 2016-10-12 15:50 编辑

我已经找出问题所在了.
RUBY 代码复制
  1. if not $ud_ok
  2.       @jumpnow -= 10
  3.       if @jumpnow < 0
  4.         @character_name = "主角ACT12下落"
  5.         @jumpnow = [@jumpnow, -JUMPMAX].max
  6.         if not down1(((@x * 128 + @revise_x) / 128.0).round,
  7.           ((@y * 128 + @revise_y) / 128.0).round, -@jumpnow, true)
  8.           @jumpnow = 0
  9.           @twojump = 0
  10.           @character_name = "主角 行走 长袖"


注译了第4行和第10行就可以正常替换行走图了..那看来是因为这里强制替换了图像的原因跟事件的替换行走图起冲突了吧

最后改成这杽亲测能通过..
RUBY 代码复制
  1. #-----------------------按跳跃-----------------------------------------------
  2. # A ボタンが押された場合
  3.     if Input.press?(Input::A) and not $ud_ok
  4.       $game_switches[1] = true
  5.       @twojump = 1 if @twojump == 0 and down1(((@x * 128 + @revise_x) / 128.0).round,
  6.       ((@y * 128 + @revise_y) / 128.0).round, 5, true)
  7.       if (not @apassed) and @twojump <= $airjump
  8.         @apassed = true
  9.         @jumpnow = JUMPMAX
  10.         se_name = @twojump == 1 ? "ACT 跳02.wav" : "ACT 跳01.wav"
  11.         Audio.se_play("Audio/SE/#{se_name}")
  12.         @twojump += 1
  13.       else
  14.         @jumpnow += 3        
  15.       end
  16.     else
  17.       @apassed = false
  18.     end
  19. #----------------------自由落体--------------------------------
  20.     if not $ud_ok and $game_switches[1] == true
  21.       @jumpnow -= 10
  22.       if @jumpnow < 0
  23.         @character_name = "主角ACT12下落"
  24.         @jumpnow = [@jumpnow, -JUMPMAX].max
  25.         if not down1(((@x * 128 + @revise_x) / 128.0).round,
  26.           ((@y * 128 + @revise_y) / 128.0).round, -@jumpnow, true)
  27.           @jumpnow = 0
  28.           @twojump = 0
  29.           @character_name = "主角 行走 长袖"
  30.           $game_switches[1] = false
  31.         end
  32.       elsif @jumpnow > 0
  33.         @character_name = @twojump == 1 ? "主角 ACT用跳跃" : "主角ACT11两段跳"
  34.         @jumpnow = [@jumpnow, JUMPMAX].min
  35.         if not up1(((@x * 128 + @revise_x) / 128.0).round,
  36.           ((@y * 128 + @revise_y) / 128.0).round, @jumpnow, true)
  37.           @jumpnow = 0
  38.         end
  39.       end
  40.     end

主要是加了开关和判断..
另外开头这些设置
  # ● 定数
  #--------------------------------------------------------------------------
  UP    = 16                  # 上方向の余裕(0 < UP < 63)
  DOWN  = -5                  # 这个是垂直方向微调 下方向の余裕(0 < DOWN <63)
  SIDE  = 32                  # 左右方向の余裕(0 < SIDE <63)

左右设成0的话..就不会陷入墙壁内了..

回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36322
在线时间
10774 小时
注册时间
2009-3-15
帖子
4813
6
发表于 2016-10-13 13:14:40 | 显示全部楼层
本帖最后由 soulsaga 于 2016-10-13 13:31 编辑

总算解決了..
RUBY 代码复制
  1. if not $ud_ok
  2.       @jumpnow -= 10
  3.       if @jumpnow < 0
  4.         $game_variables[1] = @jumpnow
  5.         @character_name = "主角ACT12下落" if $game_switches[1] != true
  6.         @jumpnow = [@jumpnow, -JUMPMAX].max
  7.         if not down1(((@x * 128 + @revise_x) / 128.0).round,
  8.           ((@y * 128 + @revise_y) / 128.0).round, -@jumpnow, true)
  9.           @jumpnow = 0
  10.           @twojump = 0
  11.           @character_name = "主角 行走 长袖" if $game_switches[1] != true
  12.         end
  13.       elsif @jumpnow > 0
  14.         @character_name = @twojump == 1 ? "主角 ACT用跳跃" : "主角ACT11两段跳"
  15.         @jumpnow = [@jumpnow, JUMPMAX].min
  16.         if not up1(((@x * 128 + @revise_x) / 128.0).round,
  17.           ((@y * 128 + @revise_y) / 128.0).round, @jumpnow, true)
  18.           @jumpnow = 0
  19.         end
  20.       end
  21.     end

然后事件设定如下图...

开关和变量编号都可以自行设定..除此以外的场合不需要..无视吧..
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-1 07:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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