ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
PhysicsSystem2D类 参考final

2D 物理系统 更多...

#include <PhysicsSystem2D.h>

类 PhysicsSystem2D 继承关系图:
System

Public 成员函数

 PhysicsSystem2D (int priority=50)
 ~PhysicsSystem2D () override
void init () override
 初始化(可覆写)
void update () override
 每帧更新(纯虚)
void destroy () override
 销毁(纯虚)
bool onComponentAttached (Component *component) override
 组件挂载时调用。返回 true 表示本系统认领并处理了该组件(组件据此确定已注册)。
void onComponentDetached (Component *component) override
 组件卸下时调用。
void setGravity (const Vector2 &gravity)
 重力(像素/秒²),默认 {0, 320}
const Vector2getGravity () const
void setPixelsPerMeter (float ppm)
 设置像素↔米比例(必须在 init() 之前调用),默认 32
float getPixelsPerMeter () const
 当前像素↔米比例(实例字段,各物理系统独立)
void registerRigidBody (RigidBody2D *body)
void unregisterRigidBody (RigidBody2D *body)
void createRigidBody (RigidBody2D *body)
 RigidBody2D 创建物理体(组件认领时调用,从 Transform 读初始位姿)
void destroyRigidBody (RigidBody2D *body)
 销毁 RigidBody2D 的物理体并注销(组件卸下时调用)
Public 成员函数 继承自 System
 System (int priority=0)
virtual ~System ()
ScenegetScene () const
void setScene (Scene *scene)
int getPriority () const
void setPriority (int priority)

友元

class RigidBody2D

额外继承的成员函数

Protected 成员函数 继承自 System
void resetComponent (Component *comp)
 内部:把认领过的组件标记为未注册(系统销毁/注销时调用)。 否则组件 m_isRegistered 残留 true,同类系统重新注册时 System::init 补扫会跳过它们, 导致组件永久失去驱动系统。
Protected 属性 继承自 System
int m_priority
 优先级(小值先执行)
Scenem_scene = nullptr
 所属场景

详细描述

2D 物理系统

包装 Box2D 3.x(C 语言 API)物理世界。 默认使用 b2SetLengthUnitsPerMeter(32) 以像素为长度单位, 用户无需手动转换像素↔米。

使用方式: scene->registerSystem<Shit::PhysicsSystem2D>();

priority=50,晚于 BehaviorSystem(0) 早于 RenderSystem(100)。

构造及析构函数说明

◆ PhysicsSystem2D()

PhysicsSystem2D ( int priority = 50)
explicit

◆ ~PhysicsSystem2D()

~PhysicsSystem2D ( )
override

成员函数说明

◆ createRigidBody()

void createRigidBody ( RigidBody2D * body)

RigidBody2D 创建物理体(组件认领时调用,从 Transform 读初始位姿)

◆ destroy()

void destroy ( )
overridevirtual

销毁(纯虚)

实现了 System.

◆ destroyRigidBody()

void destroyRigidBody ( RigidBody2D * body)

销毁 RigidBody2D 的物理体并注销(组件卸下时调用)

◆ getGravity()

const Vector2 & getGravity ( ) const
inline

◆ getPixelsPerMeter()

float getPixelsPerMeter ( ) const
inline

当前像素↔米比例(实例字段,各物理系统独立)

◆ init()

void init ( )
overridevirtual

初始化(可覆写)

重载 System .

◆ onComponentAttached()

bool onComponentAttached ( Component * component)
overridevirtual

组件挂载时调用。返回 true 表示本系统认领并处理了该组件(组件据此确定已注册)。

重载 System .

◆ onComponentDetached()

void onComponentDetached ( Component * component)
overridevirtual

组件卸下时调用。

重载 System .

◆ registerRigidBody()

void registerRigidBody ( RigidBody2D * body)

◆ setGravity()

void setGravity ( const Vector2 & gravity)

重力(像素/秒²),默认 {0, 320}

◆ setPixelsPerMeter()

void setPixelsPerMeter ( float ppm)

设置像素↔米比例(必须在 init() 之前调用),默认 32

◆ unregisterRigidBody()

void unregisterRigidBody ( RigidBody2D * body)

◆ update()

void update ( )
overridevirtual

每帧更新(纯虚)

实现了 System.

◆ RigidBody2D

friend class RigidBody2D
friend

该类的文档由以下文件生成: