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

Project1

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

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

[复制链接]

Lv5.捕梦者

梦石
0
星屑
34877
在线时间
4148 小时
注册时间
2007-12-15
帖子
9983
跳转到指定楼层
发表于 2016-9-23 12:43:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
5星屑
本帖最后由 89444640 于 2016-10-15 11:30 编辑

更新一下测试工程,阿尔西斯是控制事件,在重力脚本存在于脚本存在于脚本库时,用事件控制显示角色停止时动画都不能。删掉即可正常显示角色停止时动画。




高速跑动这个可以先不考虑

首先MeowSnow同学提出了
Input.press?(Input::LEFT) or Input.press?(Input::RIGHT) or Input.press?(Input::UP) or Input.press?(Input::DOWN)
来控制角色待机与行走的状态。
试了一下效果不错。
但是仅限于只有待机与走动两种状态

如果需要有三种甚至更多的移动状态,那就无法用条件分歧判断了。
目前想法是,在一些地图上 有 待机 走动 慢速跑动 高速跑动四种类状态,因为不是act,暂不考虑走与跑的过渡、高速跑动这些不好实现的问题。
如何实现最低 三种状态 待机 走动 跑动

跑动是按空格键加速的脚本。
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Game_Player
  3. #==============================================================================
  4. class Game_Player
  5. #--------------------------------------------------------------------------
  6. # ● フレーム更新
  7. #--------------------------------------------------------------------------
  8. alias xrxs25_update update
  9. def update
  10.    # 移動中、イベント実行中、移動ルート強制中、
  11.    # メッセージウィンドウ表示中のいずれでもない場合
  12.    unless moving? or $game_system.map_interpreter.running? or
  13.           @move_route_forcing or $game_temp.message_window_showing
  14.      if Input.press?(Input::C)
  15.        # 速度の変更
  16.        @move_speed = 5
  17.      else
  18.        @move_speed = 4
  19.      end
  20.    end
  21.    # 呼び戻す
  22.    xrxs25_update
  23. end
  24. end




无法用并行处理现实的,是重力ACT脚本的地图,
需要在ACT脚本用的地图中,可以实现待机 走 跑三种状态。因为只有一个角色,可以用脚本来控制角色图像。
这个脚本多少有点干扰正常rpg剧情,必须手动剧情结束后删,这个我没辙。

普通地图角色经常更改,因此需要在普通地图中,以单独使用事件,来控制待机、走、跑三种状态。
1当角色不移动时,判断角色当前朝向,更改成相应方向待机。
2当角色慢速移动时,更改为行走动作
3当角色按空格键加速时,更改为小幅度跑动。

重力脚本
见10楼 原来的发错了orz
RUBY 代码复制
  1.  

压缩文件中是ACT脚本中用到的素材。暂防一下注册就能下走的人,我手找,万一有漏的--b,请叫我补一下。
行走,跑动,待机三个图像都在里面。待机未调整完成,暂且用这个。


请各位帮忙,非常感谢。

Lv5.捕梦者

梦石
0
星屑
34877
在线时间
4148 小时
注册时间
2007-12-15
帖子
9983
15
 楼主| 发表于 2016-10-15 10:36:05 | 只看该作者
本帖最后由 89444640 于 2016-10-15 10:54 编辑
soulsaga 发表于 2016-10-13 17:02
# A ボタンが押された場合
    if Input.press?(Input::A) and not $ud_ok
      @twojump = 1 if @twojump ...


普通平台没事 斜角楼梯有问题!
一旦地图关闭并行事件,斜角楼梯下落就会不刷新。这到底是什么地方干扰了

我开别的工程就没事。但是自己这地图就这德行。

终于找到毛病了 场景切换时候踩到了版边的与主角接触的事件然后处理就混乱了,平台跳跃有跑动干扰无比难跳。赶紧关上
我再多测试一会,应该能用了。
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
34877
在线时间
4148 小时
注册时间
2007-12-15
帖子
9983
14
 楼主| 发表于 2016-10-13 16:19:22 | 只看该作者
本帖最后由 89444640 于 2016-10-13 16:49 编辑

[quote]soulsaga 发表于 2016-10-13 13:14
总算解決了..
能切换了,但是运行起来 ,下落的时候回强制运行并行处理事件,造成了本来应该头发飘动的下落图变成了
用待机或者行走护着跑动的图像下落--b


本来应该用这个图的

点评

我这边测试一切正常..发现我发漏了脚本..我再发一次吧..  发表于 2016-10-13 17:01
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33324
在线时间
10515 小时
注册时间
2009-3-15
帖子
4762
13
发表于 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

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

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

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
34877
在线时间
4148 小时
注册时间
2007-12-15
帖子
9983
12
 楼主| 发表于 2016-10-13 07:59:26 | 只看该作者
本帖最后由 89444640 于 2016-10-13 09:53 编辑
soulsaga 发表于 2016-10-12 14:56
我已经找出问题所在了.
    if not $ud_ok
      @jumpnow -= 10


谢谢,我测试一下~
请问是需要把game_switches[1] 这里的开关改成自己需要的开关并且,打开 才会使重力脚本生效吗?还是自动运行?

那个上下左右我改过,改成0经常会出现人物悬空因为图块横版,画的是底边禁止通行如果想不悬空必须得有少量地面的透视,绘制起来很困难。
而且我以前试过,如果设定成0,rpg模式是没问题了,但是在act模式下,一些本来可以跳上去的平台,就跳不上去了,而且如果是站里点位一格的情况,跳上去非常困难,非常难以瞄准,而且手感极硬。
无解了。

然后 这种设定情况有致命bug。可以试一下,
无论当前地图有无并行处理的更改角色图像脚本,
跳上平台后,如果在平台边缘不按其他键只按方向键,会一直走下去。而不会下落,这个bug对横版act极其致命。

在两段跳的时候会直接跳出第二段。

原脚本的情况是在边缘通行为 “可”的时候,人物会自动下落,直到站立到另外一个通行为“否”的图块上为止。

估计这个不好解决了。智能化一条直线线没平台的地图看霞效果,平时走还得用普通的行走图。

点评

谢谢~  发表于 2016-10-13 10:18
这样啊..我再稍微研究一下吧  发表于 2016-10-13 10:11
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33324
在线时间
10515 小时
注册时间
2009-3-15
帖子
4762
11
发表于 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
星屑
34877
在线时间
4148 小时
注册时间
2007-12-15
帖子
9983
10
 楼主| 发表于 2016-10-12 10:04:56 | 只看该作者
本帖最后由 89444640 于 2016-10-12 10:12 编辑
soulsaga 发表于 2016-10-10 20:16
不知为何我测试没问题呢..


是不是回档了?刚才我的回复不见了。
更新一楼测试工程。当重力脚本只要存在于脚本库中,就会出现问题。
当重力脚本打开的时候,就无法用事件来控制角色待机图像了。因为这个脚本对正常rpg运行影响实在太大,在脚本存在时,rpg地图经常会出现走入墙内的状态,非常难受。
简直无可救药。

点评

我自行加几块草地就可以动了..  发表于 2016-10-12 14:54
你的测试工程连动都动不了..按菜单键也没反应...  发表于 2016-10-12 14:28
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33324
在线时间
10515 小时
注册时间
2009-3-15
帖子
4762
9
发表于 2016-10-10 20:16:44 | 只看该作者
本帖最后由 soulsaga 于 2016-10-10 20:53 编辑

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

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33324
在线时间
10515 小时
注册时间
2009-3-15
帖子
4762
8
发表于 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
星屑
34877
在线时间
4148 小时
注册时间
2007-12-15
帖子
9983
7
 楼主| 发表于 2016-9-23 14:14:40 | 只看该作者
本帖最后由 89444640 于 2016-9-23 14:19 编辑
MeowSnow 发表于 2016-9-23 14:02
_(:з」∠)_可以继续用纯事件完成啊~把条件分歧套两次就好了,
如果按下方向键
    如果按下空格键——速度 ...


普通脚本中套成这样就能用了。


虽然会有个,按着空格和方向的时候,碰到障碍物就静止在跑步的某一个动作上orz
但是开了重力脚本的地图我就 - -b

点评

思路才对..  发表于 2016-9-23 14:26
那换个概念..例如按一下空白键切换成跑步速度和图像再按一下空白键就还原速度和行走图像如何?  发表于 2016-9-23 14:26
不能这样做是因为 和重力脚本有冲突?  发表于 2016-9-23 14:24
_(:з」∠)_原来如此,那就不知道怎么搞了……  发表于 2016-9-23 14:16
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1261
在线时间
6552 小时
注册时间
2010-12-30
帖子
8949
6
发表于 2016-9-23 14:02:51 | 只看该作者
本帖最后由 MeowSnow 于 2016-9-23 14:04 编辑

_(:з」∠)_可以继续用纯事件完成啊~把条件分歧套两次就好了,
如果按下方向键
    如果按下空格键——速度=5,切换跑步行走图
    不满足按下空格键——速度=4,切换走路行走图
不满足按下方向键——切换待机行走图
   

点评

那个,没说全,是在重力脚本中不行。  发表于 2016-9-23 14:11
_(:з」∠)_那把空格键设定为第一个分歧?  发表于 2016-9-23 14:06
试了不行--b  发表于 2016-9-23 14:04
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-20 17:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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