作者StubbornLin (Victor)
看板GameDesign
标题Re: [程式] 绕着目标旋转前进的实作方法
时间Sun Jul 18 01:08:25 2010
※ 引述《F23ko (纯洁)》之铭言:
: ※ 引述《yan04870449 (杨伯)》之铭言:
: : 其实这个问题应该比较偏向数学
: : 我想让某一个物体以旋转的方式朝着一个目标前近,
: : 也就是说是绕着目标靠近的意思。
: : 备注一下,这次是练习2D游戏。
首先,你想旋转,直接想到的就是圆,圆的公式如下
x = r*cos(θ)
y = r*sin(θ)
而只要角度θ变化,x, y就会在圆周上动,而r是半径
看你是要等速度的旋转还是加速度的
如果是等速度的,那你需要一个角速度
ω = 0.1π/second
如果你要的是加速的旋转,那就得要有一个角加速度
α = 0.1π/second^2
接着是向心的速度
μ = 1pixel/second
如果你喜欢他是以加速度的方式接近圆心的话,那可以再加上一个向心加速度
ν = 1pixel/second^2
有了这些参数,就可以在每次更新时算出时间差,下一次的位置
例如上次更新和这次差0.1秒
Δtime = 0.1seconds
那麽,公式就应该如下
# 更新角度
θ += ω*Δtime
# 更新半径
r += μ*Δtime
# 更新座标
x = r*cos(θ)
y = r*sin(θ)
# 计算向心速度
μ += ν*Δtime
# 计算角速度
ω += α*Δtime
看起来有点复杂,但其实很简单
只要你把两种移动的变量拆开来看
一个是角度,一个是半径,两个都是独立的
所以可以分开来算
--
Now.in 网路广播电台平台
http://now.in
易记学 程式设计教学
http://ez2learn.com/
VICTOR's 个人Blog
http://blog.ez2learn.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.252.67.159
1F:推 silveriii:push 07/18 21:55