[請益] 橫向卷軸斜坡設計

看板GameDesign (遊戲設計)作者 (yolling)時間13年前 (2012/08/06 21:54), 編輯推噓4(4028)
留言32則, 7人參與, 最新討論串1/1
各位高手們好,我最近在設計橫向捲軸的遊戲 目前單純沒有斜坡的橫向移動大概沒有問題 但是目前要設計上坡跟下坡的時候卡住了,因此想請問各位一下 http://ppt.cc/X1U1 如果說像這張圖,由左往右移動,第一個斜坡我本來是打算利用座標的方式 如果到了座標x某個點,就啟動某開關,讓我往右移動的時候人物增加的不只是x還有y 可是感覺這樣有點無腦,況且每個斜坡的坡度又不一樣 想請問各位如果要做橫向的設計,是如何判斷斜坡的? 謝謝 另外請問各位有推鍵的橫向設計的書籍嗎?沒有的話也沒關係,感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 49.158.60.5 ※ 編輯: yoll522 來自: 49.158.60.5 (08/06 21:55)

08/06 22:03, , 1F
如果要做這功能,通常會用現成的引擎吧 ?
08/06 22:03, 1F

08/06 22:06, , 2F
自己刻要簡單就用暴力法存地形座標,再不然判斷色塊。
08/06 22:06, 2F
因為我們是用sdl自己寫的,所以沒有引擎@@

08/06 22:08, , 3F
請問原po用的是遊戲引擎,還是dx opengl硬幹?
08/06 22:08, 3F
我是用sdl自己寫的

08/06 22:09, , 4F
基本上你的坡會有個梯度變化量 你可以設定一個門檻值
08/06 22:09, 4F
沒聽過梯度@@等等google查查看,謝謝

08/06 22:09, , 5F
超過這個門檻值就可以往前 否則只能往後之類的
08/06 22:09, 5F

08/06 22:10, , 6F
08/06 22:10, 6F
感謝提供的網址,我再來看看

08/06 22:10, , 7F
因為你會有這個坡的連續點 可以算出角色目前站的位置的梯度
08/06 22:10, 7F

08/06 22:20, , 8F
一般engine的解法就是地板是個collider
08/06 22:20, 8F

08/06 22:20, , 9F
你的人物會受到重力往下掉,直到碰到collider為止
08/06 22:20, 9F

08/06 22:21, , 10F
如果你是自己刻程式也建議這樣做
08/06 22:21, 10F

08/06 22:21, , 11F
因為2d platformer幾乎一定要用到collider
08/06 22:21, 11F
我本來也有這樣想過,就一直往下掉,直到掉到地板為止, 可是感覺這樣在爬坡的時候,斜坡事在身體的旁邊, 感覺沒辦法用往下掉的方式來爬上坡 還是是我的想法錯誤@@? ※ 編輯: yoll522 來自: 49.158.60.5 (08/06 22:28) ※ 編輯: yoll522 來自: 49.158.60.5 (08/06 22:31)

08/06 22:42, , 12F
因為個人英文不是很好,所以看網址的話要翻譯很久
08/06 22:42, 12F

08/06 22:43, , 13F
網址上的方法似乎也是把地圖變成很多個格子,用座標的
08/06 22:43, 13F

08/06 22:43, , 14F
方式來判斷前後左右該做的事情嚕?
08/06 22:43, 14F

08/06 23:01, , 15F
差不多是那樣
08/06 23:01, 15F

08/06 23:01, , 16F
另外你也可以用物理引擎來幫你處理碰撞
08/06 23:01, 16F

08/06 23:01, , 17F
可是用物理控制角色會比較麻煩
08/06 23:01, 17F

08/06 23:10, , 18F
我有學過這種方法的碰撞,只是物體是四四方方的正方形
08/06 23:10, 18F

08/06 23:10, , 20F
試試看讓角色貼著給的點或線移動,能作的話應該就能解決?
08/06 23:10, 20F

08/06 23:10, , 21F
所以我想說如果套用到高地不一的地板的話似乎也沒辦法
08/06 23:10, 21F

08/06 23:12, , 22F
當然如果你要作出加速感的話,就需要三角函數。
08/06 23:12, 22F

08/06 23:13, , 23F
請問意思是說在地板上再多畫一條線,讓角色跟著線移動嗎
08/06 23:13, 23F

08/06 23:16, , 24F
高低不一地板判斷 你可以拿一張黑白圖來判定哪邊可以走
08/06 23:16, 24F

08/06 23:16, , 25F
以及哪邊不能走
08/06 23:16, 25F

08/06 23:18, , 26F
在斜坡判定..假設腳色位置在 (x, y) ,在 x 軸上想往 v
08/06 23:18, 26F

08/06 23:18, , 27F
方向走..可以去查那張黑白圖 (x + v, y) 判定是否能走
08/06 23:18, 27F

08/06 23:19, , 28F
If not, 檢查 (x+v, y+1) 到 (x+v, y+n) 區段是否可以走
08/06 23:19, 28F

08/06 23:20, , 29F
如果可以 (x+v, y+k) 可以走,直接設定腳色在這個位置
08/06 23:20, 29F

08/06 23:21, , 30F
其中 n 為你允許玩家最陡能走的坡度, y<k<=n
08/06 23:21, 30F

08/06 23:38, , 31F
原來如此,這方法感覺還不錯,我明天會來設計看看的
08/06 23:38, 31F

08/06 23:38, , 32F
謝謝你的詳細步驟唷,也謝謝其他人的幫忙
08/06 23:38, 32F
文章代碼(AID): #1G7yoHoj (GameDesign)
文章代碼(AID): #1G7yoHoj (GameDesign)