Project1
标题:
关于瞬移的制作方法
[打印本页]
作者:
ProfesstionR
时间:
2012-8-2 14:17
标题:
关于瞬移的制作方法
本帖最后由 ProfesstionR 于 2012-8-3 16:03 编辑
RMXP里有moveto,但是moveto不能实现瞬移途中遇到障碍物就停下来的功能,
那么,如何实现直线瞬移中碰到障碍物就停在障碍物前的功能?
dsu_plus_rewardpost_czw
作者:
灯笼菜刀王
时间:
2012-8-3 02:12
想实现这种效果有两种方法
一种是真瞬移, 即A点和B点之间有个C点障碍物就停在C点的算法, 这个要用到寻路算法, 目前我还没掌握,无法帮你
第二种是伪瞬移, 就是利用强制移动来达到这个效果, 先更改图形为透明的,然后更改移动速度到最大,然后移动,勾上忽略不能移动的地方,然后把图形改回原样.达到这个效果~
作者:
LOVE丶莫颜
时间:
2012-8-3 07:02
我也不知道该怎么实现...不知道这样可不可行。
在使用该技能的时候,触发事件。
强制性的向想要的地放移动。(这个可以灵活的运用,最好是脚本。)
但是这样貌似会很影响FPS的吧?
作者:
ProfesstionR
时间:
2012-8-3 16:09
谢谢你们,我自己研究出来了
#==============================================================================
# ■ Game_Character (瞬移)
#------------------------------------------------------------------------------
# 处理角色的类。本类作为 Game_Player 类与 Game_Event
# 类的超级类使用。
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# ● 瞬移
# distance : 向前瞬移的距离
#--------------------------------------------------------------------------
def teleport(distance)
# 通行判定计算
pa = distance - 1
# 基础坐标
realmove = @x
# 面向左
if @direction == 4
# 循环处理计算目的地坐标
for i in 0..pa
# 可以通行的场合
if passable?(@x-i, @y, 4)
# 得出目的地坐标
realmove = @x-i-1
# 除此以外的场合
else
# 中断循环
break
end
end
else
# 循环处理计算目的地坐标
for i in 0..pa
# 可以通行的场合
if passable?(@x+i, @y, 6)
# 得出目的地坐标
realmove = @x+i+1
# 除此以外的场合
else
# 中断循环
break
end
end
end
# 传送至目的地坐标
moveto(realmove, @y)
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1