adjust physics numbers
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
This commit is contained in:
parent
c706b855cd
commit
4eb4fba8a0
@ -133,8 +133,8 @@
|
||||
"movementSystems" : [
|
||||
{
|
||||
"type" : "GROUND",
|
||||
"acceleration" : 100.0,
|
||||
"maxVelocity" : 50.5,
|
||||
"acceleration" : 4000.0,
|
||||
"maxVelocity" : 20.5,
|
||||
"strafeMultiplier" : 1.0,
|
||||
"backpedalMultiplier" : 0.5,
|
||||
"footstepFirstAudioOffset" : 0.2,
|
||||
@ -167,7 +167,7 @@
|
||||
{
|
||||
"type" : "JUMP",
|
||||
"jumpFrames" : 3,
|
||||
"jumpForce" : 20,
|
||||
"jumpForce" : 1.3,
|
||||
"animationJump" : {
|
||||
"nameThirdPerson" : "Jump",
|
||||
"nameFirstPerson" : "Jump",
|
||||
@ -371,6 +371,7 @@
|
||||
"dimension1" : 0.2,
|
||||
"dimension2" : 1.6,
|
||||
"dimension3" : 0.2,
|
||||
"mass": 0.3,
|
||||
"rotX": 0,
|
||||
"rotY": 0,
|
||||
"rotZ": 0,
|
||||
|
||||
@ -12,9 +12,9 @@
|
||||
],
|
||||
"collidable": {
|
||||
"type" : "CUBE",
|
||||
"mass": 1.0,
|
||||
"rollingFriction": 100.0,
|
||||
"linearFriction": 100.0,
|
||||
"mass": 0.7,
|
||||
"rollingFriction": 1.0,
|
||||
"linearFriction": 0.001,
|
||||
"dimension1" : 2.0,
|
||||
"dimension2" : 2.0,
|
||||
"dimension3" : 2.0,
|
||||
|
||||
@ -61,7 +61,7 @@ import electrosphere.logger.LoggerInterface;
|
||||
public class CollisionEngine {
|
||||
|
||||
//gravity constant
|
||||
public static final float GRAVITY_MAGNITUDE = 9.8f * 2;
|
||||
public static final float GRAVITY_MAGNITUDE = 0.2f;
|
||||
|
||||
/**
|
||||
* The damping applied to angular velocity
|
||||
@ -87,7 +87,16 @@ public class CollisionEngine {
|
||||
private static Semaphore spaceLock = new Semaphore(1);
|
||||
private DJointGroup contactgroup;
|
||||
|
||||
private static final int MAX_CONTACTS = 64; // maximum number of contact points per body
|
||||
// maximum number of contact points per body
|
||||
/**
|
||||
* <p> Maximum number of contact points per body </p>
|
||||
* <p><b> Note: </b></p>
|
||||
* <p>
|
||||
* This value must be sufficiently high (I'd recommend 64), in order for large bodies to not sink into other large bodies.
|
||||
* I used a value of 10 for a long time and found that cubes were sinking into TriMeshes.
|
||||
* </p>
|
||||
*/
|
||||
private static final int MAX_CONTACTS = 64;
|
||||
|
||||
//The list of dbodies ode should be tracking
|
||||
List<DBody> bodies = new ArrayList<DBody>();
|
||||
@ -116,7 +125,7 @@ public class CollisionEngine {
|
||||
public CollisionEngine(){
|
||||
world = OdeHelper.createWorld();
|
||||
space = OdeHelper.createBHVSpace(Collidable.TYPE_STATIC_BIT);
|
||||
world.setGravity(0,-0.5,0);
|
||||
world.setGravity(0,-GRAVITY_MAGNITUDE,0);
|
||||
// world.setAutoDisableFlag(true);
|
||||
// world.setContactMaxCorrectingVel(0.1);
|
||||
// world.setContactSurfaceLayer(0.001);
|
||||
|
||||
@ -77,7 +77,7 @@ public class SurfaceParams {
|
||||
*/
|
||||
public SurfaceParams(){
|
||||
mode = OdeConstants.dContactApprox1 & OdeConstants.dContactRolling & OdeConstants.dContactBounce;
|
||||
mu = 0.01;
|
||||
mu = 0.0001;
|
||||
rho = 10.0;
|
||||
rho2 = 10.0;
|
||||
rhoN = 10.0;
|
||||
|
||||
@ -11,8 +11,6 @@ import electrosphere.entity.Entity;
|
||||
import electrosphere.entity.EntityDataStrings;
|
||||
import electrosphere.entity.EntityUtils;
|
||||
import electrosphere.entity.btree.BehaviorTree;
|
||||
import electrosphere.entity.state.gravity.ClientGravityTree;
|
||||
import electrosphere.entity.state.movement.fall.ClientFallTree;
|
||||
|
||||
/**
|
||||
* Client collidable tree
|
||||
@ -44,31 +42,7 @@ public class ClientCollidableTree implements BehaviorTree {
|
||||
public void simulate(float deltaTime){
|
||||
Vector3d position = EntityUtils.getPosition(parent);
|
||||
Quaterniond rotation = EntityUtils.getRotation(parent);
|
||||
Vector3d offsetVector = new Vector3d();
|
||||
Vector3d newPosition = new Vector3d(position);
|
||||
//have we hit a terrain impulse?
|
||||
boolean hitTerrain = false;
|
||||
//handle impulses
|
||||
for(Impulse impulse : collidable.getImpulses()){
|
||||
// collidable.getImpulses().remove(impulse);
|
||||
Vector3d impulseForce = new Vector3d(impulse.getDirection()).mul(impulse.getForce());
|
||||
if(impulse.type.matches(Collidable.TYPE_TERRAIN)){
|
||||
hitTerrain = true;
|
||||
// System.out.println("Impulse force: " + impulseForce);
|
||||
// System.out.println("Position: " + position);
|
||||
}
|
||||
// if(impulse.type.matches(Collidable.TYPE_ITEM)){
|
||||
// if(ClientGravityTree.getClientGravityTree(parent)!=null){
|
||||
// ClientGravityTree.getClientGravityTree(parent).start();
|
||||
// }
|
||||
// }
|
||||
// if(impulse.type.matches(Collidable.TYPE_CREATURE)){
|
||||
// // System.out.println(System.currentTimeMillis() + " creature hit!");
|
||||
// if(ClientGravityTree.getClientGravityTree(parent)!=null){
|
||||
// ClientGravityTree.getClientGravityTree(parent).start();
|
||||
// }
|
||||
// }
|
||||
}
|
||||
//bound to world bounds
|
||||
if(Globals.clientWorldData != null){
|
||||
if(newPosition.x < Globals.clientWorldData.getWorldBoundMin().x){
|
||||
|
||||
Loading…
Reference in New Issue
Block a user