Only apply new behaviour to x direction only

scene_man
En Yi 2023-10-03 22:04:26 +08:00
parent f8eab8acec
commit d1d8033b77
2 changed files with 6 additions and 4 deletions

View File

@ -1809,14 +1809,15 @@ void camera_update_system(Scene_t* scene)
target_pos = p_ctransform->position; target_pos = p_ctransform->position;
target_vel = p_ctransform->velocity; target_vel = p_ctransform->velocity;
CMovementState_t* p_movement = get_component(p_player, CMOVEMENTSTATE_T); CMovementState_t* p_movement = get_component(p_player, CMOVEMENTSTATE_T);
target_pos.x += (p_movement->x_dir == 1) ? width/8: -width/8; target_pos.x += (p_movement->x_dir == 1) ? width/6: -width/6;
target_pos.y -= height / 8; //target_pos.y -= height / 8;
//target_pos.y += p_ctransform->velocity.y * 0.08; //target_pos.y += p_ctransform->velocity.y * 0.08;
} }
// Mass-Spring damper update // Mass-Spring damper update
Vector2 x = Vector2Subtract(target_pos, data->camera.cam.target); Vector2 x = Vector2Subtract(target_pos, data->camera.cam.target);
Vector2 v = Vector2Subtract(data->camera.current_vel, target_vel); Vector2 v = Vector2Subtract(data->camera.current_vel, target_vel);
//Vector2 v = data->camera.current_vel;
Vector2 F = Vector2 F =
Vector2Subtract( Vector2Subtract(
Vector2Scale(x, data->camera.k), Vector2Scale(x, data->camera.k),
@ -1834,6 +1835,7 @@ void camera_update_system(Scene_t* scene)
Vector2Scale(a_dt, dt*0.5f) Vector2Scale(a_dt, dt*0.5f)
) )
); );
data->camera.cam.target.y = target_pos.y;
data->camera.current_vel = Vector2Add(data->camera.current_vel, a_dt); data->camera.current_vel = Vector2Add(data->camera.current_vel, a_dt);
Vector2 max = GetWorldToScreen2D( Vector2 max = GetWorldToScreen2D(

View File

@ -14,8 +14,8 @@ void init_level_scene_data(LevelSceneData_t* data, uint32_t max_tiles, Tile_t* t
memset(&data->camera, 0, sizeof(LevelCamera_t)); memset(&data->camera, 0, sizeof(LevelCamera_t));
data->camera.cam.rotation = 0.0f; data->camera.cam.rotation = 0.0f;
data->camera.cam.zoom = 1.0f; data->camera.cam.zoom = 1.0f;
data->camera.mass = 0.33f; data->camera.mass = 0.2f;
data->camera.k = 3.2f; data->camera.k = 6.2f;
data->camera.c = 2.2f; data->camera.c = 2.2f;
data->tilemap.max_tiles = max_tiles; data->tilemap.max_tiles = max_tiles;