[請益] SDL中 腳色跳躍的問題

看板GameDesign作者 (地球超人)時間11年前 (2012/09/18 22:31), 編輯推噓6(6011)
留言17則, 6人參與, 最新討論串1/1
大家好 我算是自學的開發一套遊戲 爬了一些文先摸摸看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

09/18 22:36, , 1F
建議不要用+= -= 直接用=就好,不然加加減減的數字會很怪
09/18 22:36, 1F

09/18 22:41, , 2F
我也正在用sdl寫一款遊戲,正好也要開始寫跳躍的部分
09/18 22:41, 2F

09/18 22:41, , 3F
不過我的想法跟你不一樣,可是我也不曉得我的正不正確
09/18 22:41, 3F

09/18 22:42, , 4F
我是先判斷是否按下up,如果按下後則jump的bool為ture
09/18 22:42, 4F

09/18 22:42, , 5F
然後再貼角色圖的地方判斷jump那邊是否為ture,如果為是
09/18 22:42, 5F

09/18 22:43, , 6F
則角色y就開始增加,且記錄增加的次數,例如y每次+5
09/18 22:43, 6F

09/18 22:44, , 7F
增加5次後則jump為fals,然後把land為true開始下降
09/18 22:44, 7F

09/18 22:44, , 8F
以上我都還沒有實做過,只是我腦子的想法而已,不一定正確
09/18 22:44, 8F

09/18 22:45, , 9F
打錯字,fals→false
09/18 22:45, 9F

09/19 00:16, , 10F
從程式碼分析:當你在空中只要有按下左右,就不會降落
09/19 00:16, 10F

09/19 11:02, , 11F
突然發現KEYDOWN裡面有一行y_v = 0 囧 這個用意是?
09/19 11:02, 11F

09/19 14:21, , 12F
有沒有可能UP的KEYUP event被其他按鍵的event蓋掉了?
09/19 14:21, 12F

09/19 14:31, , 13F
我找得好辛苦,有沒有大大可以直接告訴我 如何顯示(繁體)
09/19 14:31, 13F

09/19 14:32, , 14F
中文字? (要不然可能還得浪費很多時間在尋找答案)
09/19 14:32, 14F

09/19 15:16, , 15F
不介意 dependency 的話,PangoCairo 還不錯用 XD
09/19 15:16, 15F

09/19 15:17, , 16F

09/19 15:18, , 17F
範例只寫產生 texture 的部份
09/19 15:18, 17F
文章代碼(AID): #1GM8NFxu (GameDesign)