y=[-(x-x0)y1+(x-x1)y0]/(x0-x1) + a*(x-x0)(x-x1)
典型的抛物线系(过两定点)。
沿着二次曲线运动的脚本让我想到了XP的彩虹神剑。
不过那里应该是采用了这样的方式:
#======================================= # 修改:更新算法,更新弹出 #======================================= if @_damage_duration > 0 @_damage_duration -= 1 for damage in @_damage damage[0].x = self.x + self.viewport.rect.x - self.ox + self.src_rect.width / 2 + (40 - damage[1]) * damage[3] / 10 damage[0].y -= damage[4]+damage[1]/10 damage[0].opacity = damage[1]*20 damage[1] -= 1 if damage[1]==0 damage[0].bitmap.dispose damage[0].dispose @_damage.delete(damage) next end end end
#=======================================
# 修改:更新算法,更新弹出
#=======================================
if @_damage_duration > 0
@_damage_duration -= 1
for damage in @_damage
damage[0].x = self.x + self.viewport.rect.x -
self.ox + self.src_rect.width / 2 +
(40 - damage[1]) * damage[3] / 10
damage[0].y -= damage[4]+damage[1]/10
damage[0].opacity = damage[1]*20
damage[1] -= 1
if damage[1]==0
damage[0].bitmap.dispose
damage[0].dispose
@_damage.delete(damage)
next
end
end
end
其中@_damage里面存的是若干数组:
[显示伤害的sprite, 伤害持续时间(时间参数), ???(似乎没用到这个参数), 水平飞行速度, 竖直飞行基础速度]
这样算出来也是一个二次曲线(不会往下掉的那种) |