Project1
标题:
怎么让图片的移动做抛物线运动
[打印本页]
作者:
277297575
时间:
2011-6-12 11:12
标题:
怎么让图片的移动做抛物线运动
就是移动图片到一个指定位置,但不是直径过去,而是让他像抛物线那样达到指定位置。类似事件或主角跳跃那样。
作者:
恋百里
时间:
2011-6-12 14:17
用二次函数算出坐标,然后改变精灵的坐标就好了- -好吧
#x^2=2py
Skeleton = Sprite.new
Skeleton.bitmap = Bitmap.new("Graphics/Battlers/Skeleton")
x1=Skeleton.x
y1=Skeleton.y
p=2
loop do
y1=(x1*x1)/(2*p)
Skeleton.x=x1
Skeleton.y=y1
Graphics.update
x1+=1
end
- -你看看是这个效果么
作者:
忧雪の伤
时间:
2011-6-12 15:04
def parabola(duration)
array = []
duration.downto(0) {|time| array.push(time) }
1.upto(duration) {|time| array.push(-time) }
return array
end
time = 15
wave = parabola(time)
sprite = Sprite.new
sprite.bitmap = Bitmap.new(4, 4)
sprite.bitmap.fill_rect(0, 0, 4, 4, Color.new(255, 255, 255))
time.times {|index| Graphics.update; sprite.y = sprite.y + 1;
sprite.x = sprite.x + wave[index] }
loop {Graphics.update}
复制代码
我想我失败了。
作者:
冰舞蝶恋
时间:
2011-6-12 15:55
for time in 1..总时间
图片.x += 1
图片.y += 1
end
+=和1可以自行改动……
作者:
沙漠点灰
时间:
2011-6-12 16:53
[凑热闹]
抛物线是二次函数...需指定3个坐标,始末只有2个...所以还要指定一个,
送上1个BUG版的,当目标x坐标比目前x坐标小时,不移动...
3个坐标,再利用牛顿插值法对二次函数求解....ls的各位...面向对象,春暖花开....
#==============================================================================
# ■ Math.quadratic
#------------------------------------------------------------------------------
# 数学模块 2次函数
#==============================================================================
def Math.quadratic(x1,x2,x3,y1,y2,y3, &block)
# 牛顿插值公式
(x1..x3).each {|x|
y=(y3*(x-x1)*(x-x2))/((x3-x1)*(x3-x2)+(y2*(x-x1)*(x-x3))/((x2-x1)*(x2-x3)+(y1*(x-x2)*(x-x3))/((x1-x2)*(x1-x3))))
block.call(x,y)
}
end
#==============================================================================
# ■ Sprite
#------------------------------------------------------------------------------
# 精灵类 管理图形对象
#==============================================================================
class Sprite
#--------------------------------------------------------------------------
# ● 平抛移动
#--------------------------------------------------------------------------
def move_to_2(x, y, ox, oy)
Math.quadratic(self.x,ox,x,self.y,oy,y){|x0|tm=x0.dup
self.x, self.y =tm
Graphics.update}
end
end
temp = Sprite.new
temp.bitmap = Bitmap.new(20,20)
temp.bitmap.fill_rect(0,0,20,20,Color.new(255,0,0))
temp.x = 52;temp.y = 20
temp.move_to_2(640,480,20,20)
复制代码
作者:
冰舞蝶恋
时间:
2011-6-12 22:04
唉,遇到一堆大神了,当咱没说好了…………抱头,悄悄的遁走…………= =||!
作者:
px.凤翔九天
时间:
2011-6-12 23:15
这...唉,数学不好啊...慨叹啊......
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1