2013-09-01 35 views
5

Używamy jme3, a problem z BetterCharacterControl polega na tym, że setMaxSlope nie jest zaimplementowany. Deweloper silnika mówi, że możemy rozwiązać sami przy użyciu nowego kontrolera:Jak chodzić po schodach i stokach?

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

I naprawdę chciałbym rozwiązanie od my game potrzebuje. Poprosiłem o tym wcześniej, ale nie rozwiązuje go:

How to improve character control for my 3D game?

Pomożesz nam postęp? Nagrałem film z problemem:

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

Niektóre dokumentacja jest tutaj: http://hub.jmonkeyengine.org/wiki/doku.php/jme3:advanced:walking_character?s[]=bettercharactercontrol#bettercharactercontrol

Mój wysiłek, aby dodać funkcjonalność do kontrolera:

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; 
    } 
} 

ale przede nie robi żadnych zmian lub jeśli ustawię wysokość na 101, to trudno będzie się poruszać dla postaci gry. Czy możesz nam pomóc zobaczyć, co należy zrobić?

+1

porządku mam zerowe doświadczenie w tej sprawie, ale może moja prosta wizja może pomóc, chciałbym zaproponować utworzenie stoku od krawędzi do dołu, więc wygląda na to, że nie skacze na schodach. Aby to zrobić, musisz wiedzieć, czy schody znajdują się w pobliżu w większym promieniu – Dediqated

Odpowiedz

2

Ponieważ ruch traktuje postać jako PhysicsRigidBody wykonaną z PhysicsJoint s, prawdopodobnie nie ma wystarczającej siły w górę w nogę lub kolano. Mam nadzieję, że parametry nie zostały ustawione, aby pomieścić taką wielkość schodów.

Ponieważ miałeś najwięcej kłopotów z poruszaniem się po pochyłych schodach, dodatkową miarą może być dostosowanie kierunku chodzenia. Wątpię, abyś mógł polegać na location.equals(lastlocation), ale w niewielkiej odległości jest dobrym sprawdzeniem, czy postać natknęła się na przeszkodę. Gdy już wiesz, że chcesz go skalować, lub utknąć poniżej.

2

Dlaczego nie używać KinematicCharacterController z zaimplementowanym setMaxSlope?

Nie wiesz, który JME używasz, ale tutaj jest źródło do tego kontrolera:

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

+0

Nie jestem pewien, ale myślę, że może być zbyt stary i przestarzały. Deweloper jme3 powiedział na forum, że powinniśmy pracować nad BetterCharacterControl i dodać do niego metodę setMaxSlope, ale jest to trudne. –

+1

Masz prawdopodobnie rację, nie mogłem zmusić KCC do pracy nad moją grą ... to mógł być ja, a może kod jest wadliwy. Po prostu przestałem próbować go używać i zrobiłem własne wykrywanie kolizji (na szczęście moja gra była "wystarczająco prosta", że było to wiarygodne). – ClickerMonkey