Project1

标题: 如此简单的一个跳跃事件怎样用纯脚本完美地重现?? [打印本页]

作者: alexncf125    时间: 2021-3-3 16:25
标题: 如此简单的一个跳跃事件怎样用纯脚本完美地重现??
本帖最后由 alexncf125 于 2021-3-3 20:47 编辑


试着用Yanfly的滑冰图块改一下215行

但其跳跃的时机我做不到与事件制的跳跃时机同个样子
求问怎样弄如同事件制的的跳跃时机
作者: 真·可乐    时间: 2021-3-3 16:25
本帖最后由 真·可乐 于 2021-3-3 20:19 编辑

这个不是事件脚本的问题,查阅一下Game_CharacterBase 396-400行,工程中跳跃事件被触发时,实际上角色并没有走到跳跃图块上
  1.   def check_event_trigger_touch_front
  2.     x2 = $game_map.round_x_with_direction(@x, @direction)
  3.     y2 = $game_map.round_y_with_direction(@y, @direction)
  4.     check_event_trigger_touch(x2, y2)
  5.   end
复制代码

而Jumping Tiles中是这样写的
  1.   def update_jumping
  2.     return if $game_map.interpreter.running?
  3.     return unless on_jumping_floor? #角色需走到跳跃图块上才会执行下面的内容
  4.     return if moving?
  5. #~     move_straight(@direction)
  6.     ##########
  7.     case @direction
  8.     when 2
  9.       jump(0, 1)
  10.     when 4
  11.       jump(-1, 0)
  12.     when 6
  13.       jump(1, 0)
  14.     when 8
  15.       jump(0, -1)
  16.     end
  17.     ##########
  18.   end
复制代码


等我想一下解决方法
有了,注意不止修改了脚本,还修改了地图通行
Data改.zip (186.2 KB, 下载次数: 81)
作者: 真·可乐    时间: 2021-3-3 17:25
本帖最后由 真·可乐 于 2021-3-3 17:29 编辑

附图太小了。想要和事件跳跃效果一模一样的话,直接用事件脚本呗
作者: alexncf125    时间: 2021-3-3 18:04
真·可乐 发表于 2021-3-3 17:25
附图太小了。想要和事件跳跃效果一模一样的话,直接用事件脚本呗

更新了一下附图, 应该大了...
事件脚本的方法我按我会的试过了, 跳跃时机还是不相同...
作者: alexncf125    时间: 2021-3-3 18:44
真·可乐 发表于 2021-3-3 17:25
附图太小了。想要和事件跳跃效果一模一样的话,直接用事件脚本呗

不太好说明...
做了个范例https://share.weiyun.com/2uZCFJBn
应该可以看到"左方事件制的斜坡"与"右方脚本制的斜坡"
从上往下跳的时机是不同的
作者: alexncf125    时间: 2021-3-3 20:44
本帖最后由 alexncf125 于 2021-3-3 20:45 编辑

@真·可乐
谢谢大大~先认可答案~
不过其实呢...在数据库图块设定那里, 那格斜坡周边是有其他几种斜坡的说...
所以其实呢...之后是会有"从左向右跳而不能右向左通行的斜坡"和"从右向左跳而不能左向右通行的斜坡"的说...
因此呢...如果地图通行一定得按大大的修改的话...左/右斜坡好像无法制作了...
作者: 真·可乐    时间: 2021-3-3 21:03
本帖最后由 真·可乐 于 2021-3-3 21:32 编辑


触发跳跃的时候,角色并不用站在地形上,所以地形设置为不可通行
作者: alexncf125    时间: 2021-3-3 21:45
真·可乐 发表于 2021-3-3 21:03
触发跳跃的时候,角色并不用站在地形上,所以地形设置为不可通行


我试著加上下面这么一段脚本和"补回when468"和"图块设置为单向通行"后, 好像可以了...
但不知道为什么那通行度得设成原本的相反方向...
原本(5L)的:

现在(https://share.weiyun.com/74efrPyQ)的:

  1. class Game_Player < Game_Character
  2.   alias move_straight_frontzcl202133 move_straight
  3.   def move_straight(d, turn_ok = true)
  4.     x2 = $game_map.round_x_with_direction(@x, d)
  5.     y2 = $game_map.round_y_with_direction(@y, d)
  6.     if $game_map.jumping_floor?(x2, y2)
  7.       return set_direction(d) unless passable?(x2, y2, d)
  8.     end
  9.     move_straight_frontzcl202133(d, turn_ok)
  10.   end
  11. end
复制代码





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