From 28a1256a888f4ef24cd4c2ce75683b4699bb4606 Mon Sep 17 00:00:00 2001 From: Miloslav Ciz Date: Thu, 26 Sep 2024 21:29:36 +0200 Subject: [PATCH] Fix collision bug --- assets.h | 21 ++++++++------------- racing.h | 27 ++++++++++++++++++++++----- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/assets.h b/assets.h index 9161d24..aed4680 100644 --- a/assets.h +++ b/assets.h @@ -27,22 +27,17 @@ static const uint8_t map1[] = 0, LCR_MAP_BLOCK(LCR_BLOCK_RAMP,36,0,32,LCR_BLOCK_MATERIAL_CONCRETE,0), -LCR_MAP_BLOCK(LCR_BLOCK_RAMP,35,0,32,LCR_BLOCK_MATERIAL_CONCRETE,0), -LCR_MAP_BLOCK(LCR_BLOCK_RAMP,34,0,32,LCR_BLOCK_MATERIAL_CONCRETE,0), -LCR_MAP_BLOCK(LCR_BLOCK_RAMP,33,0,32,LCR_BLOCK_MATERIAL_CONCRETE,0), +LCR_MAP_BLOCK(LCR_BLOCK_CUBOID_FILL,10,1,1,0,0), -LCR_MAP_BLOCK(LCR_BLOCK_FULL,33,0,33,LCR_BLOCK_MATERIAL_CONCRETE,0), -LCR_MAP_BLOCK(LCR_BLOCK_FULL,33,0,34,LCR_BLOCK_MATERIAL_CONCRETE,0), -LCR_MAP_BLOCK(LCR_BLOCK_FULL,33,0,35,LCR_BLOCK_MATERIAL_CONCRETE,0), -LCR_MAP_BLOCK(LCR_BLOCK_FULL,33,0,36,LCR_BLOCK_MATERIAL_CONCRETE,0), -LCR_MAP_BLOCK(LCR_BLOCK_FULL,33,1,36,LCR_BLOCK_MATERIAL_CONCRETE,0), +LCR_MAP_BLOCK(LCR_BLOCK_RAMP,46,0,33,LCR_BLOCK_MATERIAL_CONCRETE,LCR_BLOCK_TRANSFORM_ROT_90), +LCR_MAP_BLOCK(LCR_BLOCK_CUBOID_FILL,1,1,10,0,0), -LCR_MAP_BLOCK(LCR_BLOCK_FULL,34,0,33,LCR_BLOCK_MATERIAL_CONCRETE,0), -LCR_MAP_BLOCK(LCR_BLOCK_FULL,34,0,34,LCR_BLOCK_MATERIAL_CONCRETE,0), -LCR_MAP_BLOCK(LCR_BLOCK_FULL,34,0,35,LCR_BLOCK_MATERIAL_CONCRETE,0), -LCR_MAP_BLOCK(LCR_BLOCK_FULL,34,0,36,LCR_BLOCK_MATERIAL_CONCRETE,0), +LCR_MAP_BLOCK(LCR_BLOCK_FULL,36,0,33,LCR_BLOCK_MATERIAL_CONCRETE,0), +LCR_MAP_BLOCK(LCR_BLOCK_CUBOID_FILL,10,1,10,0,0), + +LCR_MAP_BLOCK(LCR_BLOCK_FULL,36,0,43,LCR_BLOCK_MATERIAL_CONCRETE,0), +LCR_MAP_BLOCK(LCR_BLOCK_CUBOID_FILL,10,4,1,0,0), -LCR_MAP_BLOCK(LCR_BLOCK_RAMP,32,32,32,LCR_BLOCK_MATERIAL_CONCRETE,LCR_BLOCK_TRANSFORM_ROT_180), /* LCR_MAP_BLOCK(LCR_BLOCK_FULL_ACCEL,0,0,0,LCR_BLOCK_MATERIAL_CONCRETE,0), diff --git a/racing.h b/racing.h index 81b225d..06be891 100644 --- a/racing.h +++ b/racing.h @@ -20,6 +20,9 @@ typedef int32_t LCR_GameUnit; ///< abstract game unit #include "tinyphysicsengine.h" // TODO: move some of this to constants? + +#if 0 + #define LCR_GRAVITY (LCR_PHYSICS_UNIT / 100) #define LCR_CAR_FORWARD_FRICTION (TPE_F / 11) #define LCR_CAR_TURN_FRICTION (4 * TPE_F / 4) @@ -28,6 +31,20 @@ typedef int32_t LCR_GameUnit; ///< abstract game unit #define LCR_CAR_TURN_SPEED (LCR_GAME_UNIT / 20) #define LCR_CAR_TURN_MAX (LCR_GAME_UNIT / 4) +#else + +#define LCR_GRAVITY (LCR_PHYSICS_UNIT / 140) +#define LCR_CAR_FORWARD_FRICTION (TPE_F / 9) +#define LCR_CAR_TURN_FRICTION (4 * TPE_F / 4) +#define LCR_CAR_ELASTICITY (TPE_F / 110) +#define LCR_CAR_ACCELERATION (LCR_PHYSICS_UNIT / 16) +#define LCR_CAR_TURN_SPEED (LCR_GAME_UNIT / 20) +#define LCR_CAR_TURN_MAX (LCR_GAME_UNIT / 4) + +#endif + + + #define LCR_CAR_JOINTS 5 #define LCR_CAR_CONNECTIONS 10 @@ -61,7 +78,7 @@ TPE_Vec3 _LCR_racingBlockEnvFunc(TPE_Vec3 point, const uint8_t *block) { uint8_t bx, by, bz; LCR_mapBlockGetCoords(block,&bx,&by,&bz); - + TPE_Vec3 blockOffset = TPE_vec3( (((int) bx) - LCR_MAP_SIZE_BLOCKS / 2) * LCR_PHYSICS_UNIT, (((int) by) - LCR_MAP_SIZE_BLOCKS / 2) * (LCR_PHYSICS_UNIT / 2), @@ -72,11 +89,11 @@ TPE_Vec3 _LCR_racingBlockEnvFunc(TPE_Vec3 point, const uint8_t *block) uint8_t transform = LCR_mapBlockOppositeTransform(LCR_mapBlockGetTransform(block)); - LCR_TRANSFORM_COORDS(transform,point.x,point.y,point.z,(LCR_PHYSICS_UNIT / 2), - (LCR_PHYSICS_UNIT / 4)) + LCR_TRANSFORM_COORDS(transform,point.x,point.y,point.z,LCR_PHYSICS_UNIT, + (LCR_PHYSICS_UNIT / 2)) - point = TPE_vec3Minus(point,TPE_vec3( - LCR_PHYSICS_UNIT / 2,LCR_PHYSICS_UNIT / 4,LCR_PHYSICS_UNIT / 2)); + point = TPE_vec3Minus(point, + TPE_vec3(LCR_PHYSICS_UNIT / 2,LCR_PHYSICS_UNIT / 4,LCR_PHYSICS_UNIT / 2)); switch (block[0]) {