Re: [問題]音速小子的行為模式

看板GameDesign (遊戲設計)作者 (Victor)時間18年前 (2006/06/04 16:59), 編輯推噓0(000)
留言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
文章代碼(AID): #14Wg46Ml (GameDesign)
討論串 (同標題文章)
文章代碼(AID): #14Wg46Ml (GameDesign)