Re: [問題]音速小子的行為模式
看板GameDesign (遊戲設計)作者etrexetrex (ETREX)時間18年前 (2006/06/04 15:48)推噓0(0推 0噓 0→)留言0則, 0人參與討論串7/14 (看更多)
※ 引述《StubbornLin (Victor)》之銘言:
: ※ 引述《StubbornLin (Victor)》之銘言:
: : 判斷目前的速度v在經過了一段很短的時間後的下一刻
: : 這段時間是Δt,在經過Δt的路線上
: : 是否會穿過某樣物體,而這個Δt,就是上次更新和這次更新的時間差
: : 新的的座標位置
: : y = y + vy*Δt;
: : 新的速度
: : vy = vy + g*Δt;
: : 作法是,目前的座標,和下一刻的座標,兩點間的連線
: : 看是否會交某個物件
: : 如果不會穿過某樣物體,也就是沒有碰撞,就讓它繼續往下掉
: : 如果會穿過某樣物體,就要進行碰撞的運算
: : 這要看你的的球是否要給它彈性的特性,在這裡我們假設它沒有彈性
: : 也就是掉下去就不會再彈起來
: : 接著,你只要找出Δt內行進路線裡,最先與物體接觸的那點
: : 把球的位置設在那點上面,這樣應該就OK了
: 修正一下,應該要這樣說,碰撞到的那一點,的法向量,也就是
: 垂直於那個表面的方向,給與一個這顆球在這個法向量方向上面等同大小的反作用力
: 就可以抵消,簡單的來講,就是那個方向的速度歸0
: 這樣來做應該才比較正確,因為如果是x方向碰撞到,只有x方向的速度歸0
: 而y還會繼續往下掉
: ● 當撞到的一瞬間,速度在法線項量要抵消掉
: ↓
: ↑ 法線向量
: -----------------------------------
: 就算表面是斜的,一樣也是法向量速度歸0
這樣會有另一個問題
我先只講Y
dy是Y的速度
主時間軸
{
計算dy;
if(落地)
dy=0;
y+=dy;
}
問題是當地面平坦時
落地之後即使按↑鍵去影響dy
dy還是會被歸零
因為他在移動之前是接觸著地面的狀態
囧
這讓我不曉得怎麼作跳躍的功能
--
無名網誌:http://www.wretch.cc/blog/et284vu065k3
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.125.108
討論串 (同標題文章)
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章
196
307
58
99