推 silveriii:push 07/18 21:55
※ 引述《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