Project1

标题: 怎么让事件有重力啊??? [打印本页]

作者: 1378931948    时间: 2013-1-27 11:29
标题: 怎么让事件有重力啊???
我只知道让角色有重力,事件怎么加重力啊。。
作者: Matoko    时间: 2013-1-28 19:39
大概是在Game_Character3里找地图事件的行动模式了句判断:
(不太肯定有没有写错,请先做备份才作尝试)

def move_random
   case rand(2) #原本为(4),改为只往左右走便设作(2)
     if passable?(x, y, 2)
       @y += 1 # 设定为在站不住的图块上便会往下掉
   else
       when 0 # 向下移动
       move_right(false) #原本为move_down(false)
       when 1  # 向左移动
       move_left(false)
   # when 2  # 向右移动
     # move_right(false)
   # when 3  # 向上移动
     # move_up(false)
     end
  end
end

可是做出来的事件是不能够完全贴近地面
会明显比由重力脚本定位的角色站得高一点…..
暂时找不到解决办法…

作者: Matoko    时间: 2013-1-28 19:50
另外在事件的下降时,我是另外将下降事件的速度划一地设定成6的,
在停止下降后才回复原来的速度(否则会有不同下降速度的糟糕情况)。
但我所用的方法比较古怪,所以不懂得怎样再写出来…

大概逻辑是:
事件最初开始下降时先设一个事件独占的变量去储存该事件的速度,
下降时所有事件(无论本身速度快慢)划一地以速度6下降,
在下降停止时,再从事件的独占变量读取并回复原事件来的速度。

作者: 涂鸦boy    时间: 2013-1-28 22:17
Matoko 发表于 2013-1-28 19:50
另外在事件的下降时,我是另外将下降事件的速度划一地设定成6的,
在停止下降后才回复原来的速度(否则会 ...

用后

if passable?(x, y, 2)

报错??
作者: Chen。    时间: 2013-1-28 22:33
XP?VX?VA? 不懂
作者: Matoko    时间: 2013-1-29 00:01
涂鸦boy 发表于 2013-1-28 22:17
用后

if passable?(x, y, 2)

出现错误了?抱歉呢~
可能有甚么东西记错了…(所以要叫人备份)
因为本身是一边改一边试地写出来的,
写法还得要找回当时的脚本看看才能确定;
不过当时思考方向是那样吶~

原理:
让系统先判定事件是否站在不可通行图块上
执行(@y += 1)往下掉,直至抵达不可通行图块
非下掉时,才执行事件的随机移动;
将原来随机移动随机数减少至1/2机率,
再将移动句式由原来的四方向改成左右二择;

作者: Matoko    时间: 2013-1-29 00:05
Chen。 发表于 2013-1-28 22:33
XP?VX?VA? 不懂

对了,LZ是用哪一个程序来做重力啊?
我都还没弄清楚就用我在RMXP的写法去回复了
(←呆)

作者: Chen。    时间: 2013-1-29 14:03
这是XP回答问题的地方.........
作者: Matoko    时间: 2013-1-30 18:09
本帖最后由 Matoko 于 2013-1-30 18:11 编辑
涂鸦boy 发表于 2013-1-28 22:17
用后

if passable?(x, y, 2)


漏写了@…
XP的话可以试试下面这个不完善的写法
事件会往下掉, 但是掉下的样子会很怪
(附带了一点不希望出现的左右移动…)
掉到最底时事件仍是不能紧贴地面
(事件的坐标是到位了, 但实制图像坐标却有点差距)
事件跟主角相比还是显得稍为浮空…

在Game_Character3里
  #--------------------------------------------------------------------------
  # ● 随机移动
  #--------------------------------------------------------------------------
  def move_random
if passable?(@x, @y, 2)
@y += 1; @move_speed = 5; return;
else
  @move_speed = 3
  case rand(2)
    when 0
      move_right(false)# down(false)
    when 1
      move_left(false)
#    when 2
#      move_right(false)
#    when 3
#      move_up(false)
end
    end
  end
  #--------------------------------------------------------------------------
  # ● 接近
  #--------------------------------------------------------------------------
作者: 涂鸦boy    时间: 2013-1-31 01:24
Matoko 发表于 2013-1-30 18:09
漏写了@…
XP的话可以试试下面这个不完善的写法
事件会往下掉, 但是掉下的样子会很怪


说实话。。。还是不行,离地面还有一点距离的时候就开始在空中慢慢走了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1