Re: [問題]音速小子的行為模式
看板GameDesign (遊戲設計)作者StubbornLin (Victor)時間18年前 (2006/06/04 16:59)推噓0(0推 0噓 0→)留言0則, 0人參與討論串10/14 (看更多)
※ 引述《etrexetrex (ETREX)》之銘言:
: ※ 引述《StubbornLin (Victor)》之銘言:
: 這樣會有另一個問題
: 我先只講Y
: dy是Y的速度
: 主時間軸
: {
: 計算dy;
: if(落地)
: dy=0;
: y+=dy;
: }
: 問題是當地面平坦時
: 落地之後即使按↑鍵去影響dy
: dy還是會被歸零
: 因為他在移動之前是接觸著地面的狀態
: 囧
: 這讓我不曉得怎麼作跳躍的功能
主時間軸
{
vy += g*dt; // 速度 加上重力加速度
dy = vy*dt; // 這是在上次更新到這次更新的時間內,y應該要做的位移
y += dy; // 將y的位置做移動 其實可以合在一起寫= ="
if(與水平面碰撞){
vy = 0; // y方向的速度歸0
y = 0; // 把y的位置歸到碰撞後應該所在的位置 不一定是0
if(跳躍){
vy += a; // 速度 加上 加速度
}
}
}
這樣一來,當目前球是與地面接觸,這時球會一直想要往下掉
但是因為一直與水平面碰撞,因此vy一直都是0,y也都是0
當玩家想往上跳,vy會加上一個起跳的加速度
這個加速度越大,就跳越高,當然這個速度不能太小
有了這個往上跳的速度,第二次執行這個回圈時
因為球不在是往下掉,因此就不會有碰撞的問題
然而重力會不停的把球往下拉...往下拉
因此在執行到後來的回圈裡,vy這個速度,原本從
向上 很大 -> 向上大 -> 向上中 -> 向上小 -> 0 - > 向下很小 -> 向下中....
這樣就是整個物體運動的過程
以上理論應該沒有問題,不過我還沒實作,晚上有空的話
寫個小程式來實作看看
--
VICTOR工作室 | PTT遊戲設計版隆重開幕!
| 不管是新手老手,程式美工音樂企劃....
URL : http://www.kinmen.info/vic/ | 都歡迎來遊戲設計版參與討論 XD
| 戰略高手>
C/C++ | GameTopics>
Visual Basic 6.0 | GameDesign
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.116.65.9
討論串 (同標題文章)
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章
10
14
196
307
58
99