作者Cosmology (地球超人)
看板GameDesign
標題[請益] SDL中 腳色跳躍的問題
時間Tue Sep 18 22:31:41 2012
大家好
我算是自學的開發一套遊戲
爬了一些文先摸摸看SDL跟C++
現在做到需要腳色有跳躍情況
卻常常出現問題
程式碼如下(我是著重在按鍵的部分 不知道觀念正不正確)
http://lazyfoo.net/SDL_tutorials/lesson20/index.php
這是搭配著看的教學網站
void Foo::handle_events()
{
if( event.type == SDL_KEYDOWN )
{
y_velocity = 0;
switch( event.key.keysym.sym )
{
case SDLK_RIGHT: x_velocity += 10; break;
case SDLK_LEFT: x_velocity -= 10; break;
case SDLK_UP: y_velocity += 10; break;
}
}
else if( event.type == SDL_KEYUP )
{
//Set the velocity
switch( event.key.keysym.sym )
{
case SDLK_RIGHT: x_velocity -= 10; break;
case SDLK_LEFT: x_velocity += 10; break;
case SDLK_UP: y_velocity -= 20; break;
}
}
}
主要就是運用↑鍵可以往上移動
但是放掉以後速度卻變成減更多 使他往下掉這樣
然後在按紐以後可以重新定義速度0
可是常常會出現 卡在半空中的情況
或是上跟右一起按會卡在半空中這樣
不知道怎麼解決...
請問這樣的設定觀念正確嗎?(人物圖是40*40)
比較完整的程式碼我放在學校
如果有需要的話我明天會附上
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.36.234.248
推 BSpowerx:建議不要用+= -= 直接用=就好,不然加加減減的數字會很怪 09/18 22:36
推 yoll522:我也正在用sdl寫一款遊戲,正好也要開始寫跳躍的部分 09/18 22:41
→ yoll522:不過我的想法跟你不一樣,可是我也不曉得我的正不正確 09/18 22:41
→ yoll522:我是先判斷是否按下up,如果按下後則jump的bool為ture 09/18 22:42
→ yoll522:然後再貼角色圖的地方判斷jump那邊是否為ture,如果為是 09/18 22:42
→ yoll522:則角色y就開始增加,且記錄增加的次數,例如y每次+5 09/18 22:43
→ yoll522:增加5次後則jump為fals,然後把land為true開始下降 09/18 22:44
→ yoll522:以上我都還沒有實做過,只是我腦子的想法而已,不一定正確 09/18 22:44
→ yoll522:打錯字,fals→false 09/18 22:45
推 KanoLoa:從程式碼分析:當你在空中只要有按下左右,就不會降落 09/19 00:16
推 BSpowerx:突然發現KEYDOWN裡面有一行y_v = 0 囧 這個用意是? 09/19 11:02
推 demon3612:有沒有可能UP的KEYUP event被其他按鍵的event蓋掉了? 09/19 14:21
→ funbook:我找得好辛苦,有沒有大大可以直接告訴我 如何顯示(繁體) 09/19 14:31
→ funbook:中文字? (要不然可能還得浪費很多時間在尋找答案) 09/19 14:32
推 Bencrie:不介意 dependency 的話,PangoCairo 還不錯用 XD 09/19 15:16
→ Bencrie:範例只寫產生 texture 的部份 09/19 15:18