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

Project1

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

[已经解决] 如何实现强制向上移动的同时能控制左右?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2013-1-13
帖子
17
跳转到指定楼层
1
发表于 2013-7-14 17:28:25 手机端发表。 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
用事件移动人物的话事件必须执行完毕人物才能再次受控,我想做一个强制向上移动并且能手动控制左右的效果

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
发表于 2013-7-14 17:29:06 | 只看该作者
是角色直接斜着走路?
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2013-1-13
帖子
17
3
 楼主| 发表于 2013-7-14 18:07:04 | 只看该作者
chd114 发表于 2013-7-14 17:29
是角色直接斜着走路?

嗯。。。差不多吧,我想实现的效果是像飞行射击游戏一样地图自动卷动,人物固定在中间但可以左右移动
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

4
发表于 2013-7-14 18:08:46 | 只看该作者
lllzjsj 发表于 2013-7-14 18:07
嗯。。。差不多吧,我想实现的效果是像飞行射击游戏一样地图自动卷动,人物固定在中间但可以左右移动 ...

那不就是8方向脚本吗···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2013-1-13
帖子
17
5
 楼主| 发表于 2013-7-14 18:12:53 | 只看该作者
chd114 发表于 2013-7-14 18:08
那不就是8方向脚本吗···

八方向脚本不是斜着移动吗?我是想让人物一直保持移动,只能控制左右平移
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
54 小时
注册时间
2013-1-3
帖子
128
6
发表于 2013-7-14 19:22:26 | 只看该作者
复制角色图中面朝上的部分,覆盖掉其面朝左右下的部分
然后你就发现你的任何移动都看起来角色是面朝上的移动

飞行射击类游戏,就这样改动一下就够了,至少我认为。也是最方便的改动
1
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (管理员)

砂上描绘的愿想

梦石
15
星屑
4120
在线时间
5075 小时
注册时间
2012-1-15
帖子
4618

开拓者贵宾短篇七成年组亚军剧作品鉴家

7
发表于 2013-7-14 19:29:22 | 只看该作者
0 0 模模糊糊记得好像《小丑馆3》的游戏关底就是一个这样的设计,不过那是VX游戏……
若后退就皆成谎言。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2013-1-13
帖子
17
8
 楼主| 发表于 2013-7-14 19:42:10 | 只看该作者
asdwds 发表于 2013-7-14 19:22
复制角色图中面朝上的部分,覆盖掉其面朝左右下的部分
然后你就发现你的任何移动都看起来角色是面 ...


问题是我要的是实际在移动,而不是一直向上
我要做的就是主角不停地向上跑,停不下来

点评

强制移动的方法已经回复了,请察看4-86  发表于 2013-7-17 18:32
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
54 小时
注册时间
2013-1-3
帖子
128
9
发表于 2013-7-14 22:41:33 | 只看该作者
本帖最后由 asdwds 于 2013-7-14 23:18 编辑
lllzjsj 发表于 2013-7-14 19:42
问题是我要的是实际在移动,而不是一直向上
我要做的就是主角不停地向上跑,停不下来 ...


如果是要让主角一直往某个方向跑的话,可以考虑用我写的。
使用方法看下楼,有BUG请告诉我

下面第一个是在开关2打开时,玩家将不能上下走。下面第二个是通过设置$game_player.upx和upy从而让其每帧都位移
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Game_CharacterBase
  3. #------------------------------------------------------------------------------
  4. #  管理地图人物的基本类。是所有地图人物类的共通父类。拥有坐标、图片等基本信息。
  5. #==============================================================================
  6. class Game_CharacterBase
  7.   #--------------------------------------------------------------------------
  8.   # ● 径向移动
  9.   # 用不了alias,所以请注意插入的位置
  10.   #--------------------------------------------------------------------------
  11.   def move_straight(d, turn_ok = true)
  12.     @move_succeed = passable?(@x, @y, d)
  13.     if @move_succeed && onlyRL?(d)  #就这里改动了
  14.       set_direction(d)
  15.       @x = $game_map.round_x_with_direction(@x, d)
  16.       @y = $game_map.round_y_with_direction(@y, d)
  17.       @real_x = $game_map.x_with_direction(@x, reverse_dir(d))
  18.       @real_y = $game_map.y_with_direction(@y, reverse_dir(d))
  19.       increase_steps
  20.     elsif turn_ok &&
  21.       set_direction(d)
  22.       check_event_trigger_touch_front
  23.     end
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ● 判断是否是往左或右移动 并且是只能左右的情况
  27.   #   在这里设定的是 $game_switches[2]== true 时是只能左右,
  28.   #  随意更改[]内数字,只要记得在限定左右时,开关操作-打开[]开关就可以了
  29.   #--------------------------------------------------------------------------
  30.   def onlyRL?(d)
  31.     if $game_switches[2] == true
  32.       if d == 2 or d == 8
  33.         return false
  34.       end
  35.     end
  36.     return true
  37.   end
  38. end


下面第二个是通过设置$game_player.upx和upy从而让其每帧都位移
        
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Game_CharacterBase
  3. #------------------------------------------------------------------------------
  4. #  管理地图人物的基本类。是所有地图人物类的共通父类。拥有坐标、图片等基本信息。
  5. #==============================================================================
  6.  
  7. class Game_Player < Game_Character
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_accessor   :upy                        # y 每帧增长的y
  12.   attr_accessor   :upx                        # x 每帧增长的y
  13.   attr_accessor   :upover                     # 强制位移终止
  14.   #--------------------------------------------------------------------------
  15.   # ● 初始化对象
  16.   #--------------------------------------------------------------------------
  17.   alias init initialize
  18.   def initialize
  19.     init
  20.     @upx = 0
  21.     @upy = 0
  22.     @upover = false
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 由方向键移动
  26.   #--------------------------------------------------------------------------
  27.   def move_by_input
  28.     return if !movable? || ($game_map.interpreter.running? and (@upy == 0 and @upx == 0) ) #多加了一个条件
  29.    #若觉得条件太长,改成@uping的true/false变量,一旦使用强制移动就打开,不使用就false
  30.     move_straight(Input.dir4) if Input.dir4 > 0
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 更新画面
  34. #  没有使用alias,请注意插入的位置
  35. #--------------------------------------------------------------------------
  36.   def update
  37.     last_real_x = @real_x - @upx
  38.     last_real_y = @real_y - @upy
  39.     last_moving = moving?
  40.     move_by_input
  41.     super
  42.     update_scroll(last_real_x, last_real_y)
  43.     if @upy != 0
  44.       @y = $game_map.round_y( @y + @upy)
  45.       @real_y = @y
  46.     end
  47.     if @upx != 0        # 这是X轴强制移动的部分,单独和x有关的,基本都是
  48.       @x = $game_map.round_x( @x + @upx)
  49.       @real_x = @x
  50.     end
  51.     if @upover == true
  52.       @x = @x.to_i  # to_i改成整数,否则将会因为小数而无法触发事件
  53.       @y = @y.to_i
  54.       @upover = false
  55.     end
  56.     update_vehicle
  57.     update_nonmoving(last_moving) unless moving?
  58.     @followers.update
  59.   end
  60. end


评分

参与人数 1梦石 +1 收起 理由
Sion + 1 感谢帮忙

查看全部评分

1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
54 小时
注册时间
2013-1-3
帖子
128
10
发表于 2013-7-14 22:47:41 | 只看该作者
本帖最后由 asdwds 于 2013-7-14 22:50 编辑


地图上的一个事件,001:time代表你要强制位移的时间,不一定要使用001变量
002开关,是我上面的只能左右的控制开关,可以改为别的开关变量,但是脚本那里也记得改一下
我自己用,是可以的。有可能我贴脚本时,漏掉了。或者贴错了地方173
也许能写的比我写的更短,或者更有效率些,但是个人觉得够用
第一页

第二页,独立A打开条件下


任何BUG,希望能告诉我,另外有可能和Game_Player的脚本冲突,请注意位置和前后关系
1
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 08:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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