diff --git a/src/engine/core/time.cpp b/src/engine/core/time.cpp index b2cad6e..8da1a74 100644 --- a/src/engine/core/time.cpp +++ b/src/engine/core/time.cpp @@ -1,6 +1,7 @@ #include "time.h" #include #include // 用于 SDL_GetTicksNS() +#include namespace engine::core { @@ -32,7 +33,8 @@ void Time::limitFrameRate(float current_delta_time) { SDL_DelayNS(ns_to_wait); delta_time_ = static_cast(SDL_GetTicksNS() - last_time_) / 1000000000.0; } else { // 否则,直接使用当前帧耗费的时间 - delta_time_ = static_cast(current_delta_time); + // 限制最大 delta time 为 0.1秒 (即最低 10 FPS),防止刚启动或卡顿时的物理穿模 + delta_time_ = std::min(static_cast(current_delta_time), 0.1); } } diff --git a/src/engine/scene/scene.h b/src/engine/scene/scene.h index 28977c6..f02cbca 100644 --- a/src/engine/scene/scene.h +++ b/src/engine/scene/scene.h @@ -88,7 +88,6 @@ public: engine::core::Context& getContext() const { return context_; } ///< @brief 获取上下文引用 engine::scene::SceneManager& getSceneManager() const { return scene_manager_; } ///< @brief 获取场景管理器引用 - std::vector>& getGameObjects() { return game_objects_; } ///< @brief 获取场景中的游戏对象 protected: void processPendingAdditions(); ///< @brief 处理待添加的游戏对象。(每轮更新的最后调用)