2012-10-11 74 views
1

我使用Unity3D,並且我有一個帶有剛體的玩家。我爲身體移動球員增加了力量。我的球員在地形上行走,但能夠爬上陡峭的山峯爬上。我想限制玩家,使其無法爬上陡峭的斜坡。玩家移動的坡度限制

我知道有一個CharacterController組件具有這種功能,但我必須使用剛體,所以我想要的是一樣的,但在我的剛體上。

我可以得到我正站在的三角形的法線,並計算其角度,但我似乎無法讓玩家停止向上移動斜坡。只有讓玩家停止移動(這使得玩家在碰到斜坡時不能移動)

任何想法如何解決這個問題?

+1

一個天真但很簡單的方法就是保存你的最後一個位置。當玩家輸入一個斜率大於閾值的三角形時,禁用玩家控制和LERP回到最後位置,然後重新啓用控制。 – Jerdak

+0

這是一款快節奏的遊戲,所以我不希望我禁用播放器控件,即使它只有幾毫秒。然後你不能走下斜坡,因爲你會回到頂端。 – Kazoeja

回答

3

如果沒有關於如何使用物理引擎的更多細節,很難回答。你如何使用摩擦?你施加力量的角度是什麼?它總是水平的還是與地面成角度的?玩家是否有質量?

無論如何,我能想到的幾個方法來解決這個

  1. 圍棋純物理路徑。使用玩家質量,摩擦,力量角度,重力等。獲取物理學爲您處理這些情況。這可能需要相當長的時間和編程。

  2. 保持僵硬的身體,但假的力量。使用玩家所在三角形的角度來縮放您施加給玩家身體的力量。你可以使用三角函數來確定你應該應用什麼或者你自己的映射。通過你自己的映射,我的意思是設置一個角度,其中施加0力(比如45度),並對所施加的力做一個線性(或非線性)的比例,因此平坦的地面力爲1,並且在45的力爲0.

  3. 請勿使用剛體。大多數遊戲不使用剛體來控制角色是有原因的。這很難也很複雜,大部分時間都不值得花費時間。當然,我不知道你的項目的細節,所以如果這不是一個選項,那很好。

希望能給你一些想法。

+0

非常感謝這給了我想要的東西。已經有一些代碼工作,但它仍然非常緊張。但是我切換到了另一項任務,所以現在暫時擱置。感謝您的見解! – Kazoeja