查看: 5373|回复: 4

[已经解决] 45度行走图的帧数问题

[复制链接]
梦石
0
星屑
724
在线时间
685 小时
注册时间
2009-5-29
回帖
332
发表于 2013-2-24 11:18:07 | 显示全部楼层 |阅读模式

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

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

×
想在游戏里使用像这样的45度行走图,
$楚歌.png
然后使用了以下脚本:
[pre lang="ruby" line="1"]class Game_Player < Game_Character
  def move_by_input
     case Input.dir8
      when 2;move_diagonal(6,2)  
      when 4;move_diagonal(4,2)
      when 6;move_diagonal(6,8)   
      when 8;move_diagonal(4,8)
     end  
  end
end[/pre]

问题来了:
1.行走的时候屏幕会突然卷动,角色可能跑到屏幕边缘
2.走路的动作看起来极不协调,怎么让走路时读取行走图的顺序为2-3-4-5-4-3-2-3-4...这样看起来会自然一点
3.站立的行走图怎么只能为第一列?系统默然站立的时候是读取中间的行走图,不知如何改动?

求指教,感激不尽。
梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2013-2-24 21:31:27 | 显示全部楼层
本帖最后由 j433463 于 2013-2-24 21:34 编辑

试试这个八方向移动脚本如何?最底下那个应该是斜向的处理,您好像只用了上面的部份。
  1. #==============================================================================
  2. # ■ VXAce-RGSS3-26 8方向移动 [Ver.1.0.0]          by Claimh
  3. #------------------------------------------------------------------------------
  4. # 8方向の移动が可能となります。
  5. # 斜め移动ができない时に縦or横に移动できる场合は縦or横に移动するようになります。
  6. #==============================================================================

  7. class Game_Player < Game_Character
  8.   #--------------------------------------------------------------------------
  9.   # ● 方向ボタン入力による移动処理
  10.   #--------------------------------------------------------------------------
  11.   def move_by_input
  12.     return if !movable? || $game_map.interpreter.running?
  13.     if [1, 3, 7, 9].include?(Input.dir8)
  14.       case Input.dir8
  15.       when 1; move_diagonal(4, 2)
  16.       when 3; move_diagonal(6, 2)
  17.       when 7; move_diagonal(4, 8)
  18.       when 9; move_diagonal(6, 8)
  19.       end
  20.       return if @move_succeed
  21.     end
  22.     move_straight(Input.dir4) if Input.dir4 > 0
  23.   end
  24. end


  25. class Game_CharacterBase
  26.   #--------------------------------------------------------------------------
  27.   # ● 斜めに移动
  28.   #     horz : 横方向(4 or 6)
  29.   #     vert : 縦方向(2 or 8)
  30.   #--------------------------------------------------------------------------
  31.   alias move_diagonal_8dir move_diagonal
  32.   def move_diagonal(horz, vert)
  33.     if !passable?(@x, @y, horz) and !passable?(@x, @y, vert)
  34.       @move_succeed = false
  35.       return
  36.     end
  37.     return move_straight(horz) if passable?(@x, @y, horz) and !passable?(@x, @y, vert)
  38.     return move_straight(vert) if !passable?(@x, @y, horz) and passable?(@x, @y, vert)
  39.     move_diagonal_8dir(horz, vert)
  40.   end
  41. end

复制代码

点评

好东西,还有一个问题就是,站立的行走图怎么设置为第一列?系统默然站立的时候是读取最中间的行走图,不知如何改动?  发表于 2013-2-25 13:43

评分

参与人数 1梦石 +1 收起 理由
Mic_洛洛 + 1 认可答案

查看全部评分

修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2013-2-25 14:09:05 | 显示全部楼层
Game_CharacterBase 大约 73~75 行之间有个
  1.     @original_pattern = 1                 # 原图案
复制代码
1 改成 0 就会在停步时为第一列的姿式,第 390 行左右也有一个 @original_pattern = 1,那是更换角色图像时的,要不要改看您的情况了,

但除了这个之外,您的步行图是五列,不是 VA 的三列,那取图的计算也要修改,可就不是那么简单了。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

梦石
0
星屑
724
在线时间
685 小时
注册时间
2009-5-29
回帖
332
 楼主| 发表于 2013-2-25 19:04:30 | 显示全部楼层
j433463 发表于 2013-2-25 14:09
Game_CharacterBase 大约 73~75 行之间有个1 改成 0 就会在停步时为第一列的姿式,第 390 行左右也有一个 @ ...

取图像由3列变为5列我改好了,但是走路的时候似乎只有前三列行走图生效,所以动作只有一半,还应该改哪里呢?
回复

使用道具 举报

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2013-2-26 03:01:40 | 显示全部楼层
目测的个人认为应该是:

def update_animation

def update_anime_count

def update_anime_pattern

这三个吧,不过没有测试也无法确认是不是,

@pattern = (@pattern + 1) % 4

这应该是决定第几个步行姿式的,但前面步行计数也有判断更新姿式的关系。

点评

下班回去研究一下先……太伤脑筋了……  发表于 2013-2-26 09:01
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部