2013-09-01 95 views
5

我們使用jme3,並且BetterCharacterControl的一個問題是setMaxSlope未實現。發動機的開發人員說,我們可以使用新的控制器解決它自己:如何走樓梯和斜坡?

http://hub.jmonkeyengine.org/forum/topic/setmaxslope-for-bettercharactercontrol/

而且我也很喜歡,因爲my game的解決方案需要它。我問過這件事,但是我們沒有解決這個問題:

How to improve character control for my 3D game?

你能幫助我們進步?我錄的問題視頻:

http://www.youtube.com/watch?v=PF_UzoOXD0E

有些文檔是在這裏: http://hub.jmonkeyengine.org/wiki/doku.php/jme3:advanced:walking_character?s[]=bettercharactercontrol#bettercharactercontrol

我努力的功能添加到控制器:

package adventure; 

import com.jme3.math.Vector3f; 
import com.jme3.bullet.control.BetterCharacterControl; 

public class GameCharControl extends BetterCharacterControl { 
    protected Vector3f lastlocation = new Vector3f(); 

    public GameCharControl(float x, float y, float z) { 
     super(x, y, z); 
    } 

    @Override 
    public void update(float tpf) { 
     super.update(tpf); 
     System.out.println("location " + location); 
     System.out.println("lastlocation " + lastlocation); 

     if (location.equals(lastlocation)) { 
      System.out.println("update2"); 
      this.setHeightPercent(101); 
     } 
     rigidBody.getPhysicsLocation(location); 
     applyPhysicsTransform(location, rotation); 
     lastlocation = location; 
    } 
} 

但上面沒有任何改變,或者如果我將高度設置爲101,那麼遊戲角色難以移動。你能幫我們看看應該做什麼嗎?

+1

還好我有零經驗上這一點,但也許我的簡單的視覺能幫上忙,我建議設立一個斜坡從邊緣往下看,所以看起來他不會在樓梯上跳起來。爲了做到這一點,你必須知道樓梯是否在附近的一個更大的範圍內 – Dediqated

回答

2

由於運動將角色視爲由PhysicsJoint組成的PhysicsRigidBody,所以在他的腿部或膝蓋上可能沒有足夠的上翹。希望那裏的參數不是爲了適應這個樓梯的大小。

由於您在導航有角度的樓梯時遇到了最大的麻煩,因此次要措施可能是調整步行方向。我懷疑你可以依靠location.equals(lastlocation),但在短距離內是一個很好的檢查,看看角色是否遇到障礙。一旦你知道有一個步驟,你想要整潔地縮放或保持低於。

2

爲什麼不使用具有setMaxSlope實現的KinematicCharacterController?

不知道這JME您使用的,但這裏的源到控制器:

https://code.google.com/p/jbullet-jme/source/browse/branches/jbullet/src/com/bulletphysics/dynamics/character/KinematicCharacterController.java

+0

我不確定,但我認爲它可能太舊,不推薦使用。 jme3開發人員在論壇上表示,我們應該在BetterCharacterControl上工作並向其中添加setMaxSlope方法,但這很困難。 –

+1

你可能是對的,我無法讓KCC在我的遊戲上工作......它可能是我或者代碼有缺陷。我只是放棄了嘗試使用它,並做了我自己的碰撞檢測(幸運的是我的遊戲「簡單」夠了,這似乎是合理的)。 – ClickerMonkey