OpenSiv3D  v0.6.5
C++20 framework for creative coding
s3d::P2Body Class Reference

2D 物理演算のワールドに存在する物体 More...

#include <P2Body.hpp>

Public Member Functions

SIV3D_NODISCARD_CXX20 P2Body ()
 デフォルトコンストラクタ More...
 
P2BodyID id () const noexcept
 物体の ID を返します。 More...
 
bool isEmpty () const noexcept
 物体がワールドに存在しないかを返します More...
 
 operator bool () const noexcept
 物体がワールドに存在するかを返します。 More...
 
void release ()
 物体をワールドから明示的に削除します。 More...
 
P2BodyaddLine (const Line &localPos, OneSided oneSided, const P2Material &material={}, const P2Filter &filter={})
 線分の部品を物体に追加します。 More...
 
P2BodyaddLineString (const LineString &localPos, OneSided oneSided, const P2Material &material={}, const P2Filter &filter={})
 連続する複数の線分の部品を物体に追加します。 More...
 
P2BodyaddClosedLineString (const LineString &localPos, OneSided oneSided, const P2Material &material={}, const P2Filter &filter={})
 連続する複数の線分(終点と始点を結ぶ)の部品を物体に追加します。 More...
 
P2BodyaddCircle (const Circle &localPos, const P2Material &material={}, const P2Filter &filter={})
 円の部品を物体に追加します。 More...
 
P2BodyaddCircleSensor (const Circle &localPos, const P2Filter &filter={})
 円形のセンサー部品を物体に追加します。 More...
 
P2BodyaddRect (const RectF &localPos, const P2Material &material={}, const P2Filter &filter={})
 長方形の部品を物体に追加します。 More...
 
P2BodyaddTriangle (const Triangle &localPos, const P2Material &material={}, const P2Filter &filter={})
 三角形の部品を物体に追加します。 More...
 
P2BodyaddQuad (const Quad &localPos, const P2Material &material={}, const P2Filter &filter={})
 凸な四角形の部品を物体に追加します。 More...
 
P2BodyaddPolygon (const Polygon &localPos, const P2Material &material={}, const P2Filter &filter={})
 多角形の部品を物体に追加します。 More...
 
P2BodyaddPolygons (const MultiPolygon &localPos, const P2Material &material={}, const P2Filter &filter={})
 複数の多角形の部品を物体に追加します。 More...
 
P2BodysetSleepEnabled (bool enabled) noexcept
 
bool getSleepEnabled () const noexcept
 
P2BodysetAwake (bool awake) noexcept
 
bool isAwake () const noexcept
 
P2BodysetPos (double x, double y) noexcept
 
P2BodysetPos (Vec2 pos) noexcept
 
P2BodymoveBy (double x, double y) noexcept
 
P2BodymoveBy (Vec2 v) noexcept
 
P2BodysetAngle (double angle) noexcept
 
P2BodyrotateBy (double angle) noexcept
 
P2BodysetTransform (double x, double y, double angle) noexcept
 
P2BodysetTransform (Vec2 pos, double angle) noexcept
 
P2BodyapplyForce (Vec2 force) noexcept
 
P2BodyapplyForce (Vec2 force, Vec2 offset) noexcept
 
P2BodyapplyForceAt (Vec2 force, Vec2 pos) noexcept
 
P2BodyapplyLinearImpulse (Vec2 force) noexcept
 
P2BodyapplyLinearImpulse (Vec2 force, Vec2 offset) noexcept
 
P2BodyapplyLinearImpulseAt (Vec2 force, Vec2 pos) noexcept
 
P2BodyapplyTorque (double torque) noexcept
 
P2BodyapplyAngularImpulse (double torque) noexcept
 
Vec2 getPos () const noexcept
 物体のワールド座標 (cm) を返します。 More...
 
double getAngle () const noexcept
 物体の回転角度(ラジアン)を返します。 More...
 
std::pair< Vec2, double > getTransform () const noexcept
 
P2BodysetVelocity (Vec2 v) noexcept
 
Vec2 getVelocity () const noexcept
 物体の現在の速度 (cm/s) を返します。 More...
 
P2BodysetAngularVelocity (double omega) noexcept
 
double getAngularVelocity () const noexcept
 物体の現在の角速度 (rad/s) を返します。 More...
 
P2BodysetDamping (double damping) noexcept
 
double getDamping () const noexcept
 
P2BodysetAngularDamping (double damping) noexcept
 
double getAngularDamping () const noexcept
 
P2BodysetGravityScale (double scale) noexcept
 
double getGravityScale () const noexcept
 
double getMass () const noexcept
 物体の重量 (kg) を返します。 More...
 
double getInertia () const noexcept
 
P2BodysetBodyType (P2BodyType bodyType) noexcept
 
P2BodyType getBodyType () const noexcept
 
P2BodysetFixedRotation (bool fixedRotation) noexcept
 物体の回転の無効・有効を設定します(デフォルトは有効) More...
 
bool isFixedRotation () const noexcept
 物体の回転が有効であるか、現在の設定を返します。 More...
 
const P2Bodydraw (const ColorF &color=Palette::White) const
 物体のすべての部品を描画します。 More...
 
const P2BodydrawFrame (double thickness=1.0, const ColorF &color=Palette::White) const
 物体のすべての部品の枠を描画します。 More...
 
const P2BodydrawWireframe (double thickness=1.0, const ColorF &color=Palette::White) const
 物体のすべての部品をワイヤフレーム表示します。 More...
 
size_t num_shapes () const noexcept
 物体が持つ部品の個数を返します。 More...
 
P2Shapeshape (size_t index)
 
const P2Shapeshape (size_t index) const
 
const std::shared_ptr< P2Shape > & getPtr (size_t index) const noexcept
 
template<class PShape , std::enable_if_t< std::is_base_of_v< P2Shape, PShape >> * = nullptr>
std::shared_ptr< PShape > as (size_t index) const
 物体の部品を P2Shape を継承するクラスのポインタとして返します。 More...
 

Detailed Description

2D 物理演算のワールドに存在する物体

Remarks
0 個以上(通常は 1 個以上)の部品 (P2Shape) から構成されます。

Constructor & Destructor Documentation

◆ P2Body()

SIV3D_NODISCARD_CXX20 s3d::P2Body::P2Body ( )

デフォルトコンストラクタ

Member Function Documentation

◆ addCircle()

P2Body& s3d::P2Body::addCircle ( const Circle localPos,
const P2Material material = {},
const P2Filter filter = {} 
)

円の部品を物体に追加します。

Remarks
P2Circle の部品を物体に追加します。
Parameters
localPos物体のワールド座標から見たローカルでの形状の座標 (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
*this

◆ addCircleSensor()

P2Body& s3d::P2Body::addCircleSensor ( const Circle localPos,
const P2Filter filter = {} 
)

円形のセンサー部品を物体に追加します。

Remarks
P2Circle の部品を物体に追加します。
Parameters
localPos物体のワールド座標から見たローカルでの形状の座標 (cm)
filterセンサーの干渉フィルタ
Returns
*this

◆ addClosedLineString()

P2Body& s3d::P2Body::addClosedLineString ( const LineString localPos,
OneSided  oneSided,
const P2Material material = {},
const P2Filter filter = {} 
)

連続する複数の線分(終点と始点を結ぶ)の部品を物体に追加します。

Remarks
P2LineString の部品を物体に追加します。
Parameters
localPos物体のワールド座標から見たローカルでの形状の座標 (cm)
oneSided線分の片側(右に向かうときの上側)のみ干渉するか
material部品の材質
filter部品の干渉フィルタ
Returns
*this

◆ addLine()

P2Body& s3d::P2Body::addLine ( const Line localPos,
OneSided  oneSided,
const P2Material material = {},
const P2Filter filter = {} 
)

線分の部品を物体に追加します。

Remarks
P2Line の部品を物体に追加します。
Parameters
localPos物体のワールド座標から見たローカルでの形状の座標 (cm)
oneSided線分の片側(右に向かうときの上側)のみ干渉するか
material部品の材質
filter部品の干渉フィルタ
Returns
*this

◆ addLineString()

P2Body& s3d::P2Body::addLineString ( const LineString localPos,
OneSided  oneSided,
const P2Material material = {},
const P2Filter filter = {} 
)

連続する複数の線分の部品を物体に追加します。

Remarks
P2LineString の部品を物体に追加します。
Parameters
localPos物体のワールド座標から見たローカルでの形状の座標 (cm)
oneSided線分の片側(右に向かうときの上側)のみ干渉するか
material部品の材質
filter部品の干渉フィルタ
Returns
*this

◆ addPolygon()

P2Body& s3d::P2Body::addPolygon ( const Polygon localPos,
const P2Material material = {},
const P2Filter filter = {} 
)

多角形の部品を物体に追加します。

Remarks
P2Polygon の部品を物体に追加します。
Parameters
localPos物体のワールド座標から見たローカルでの形状の座標 (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
*this

◆ addPolygons()

P2Body& s3d::P2Body::addPolygons ( const MultiPolygon localPos,
const P2Material material = {},
const P2Filter filter = {} 
)

複数の多角形の部品を物体に追加します。

Remarks
複数の P2Polygon の部品を物体に追加します。
Parameters
localPos物体のワールド座標から見たローカルでの形状の座標 (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
*this

◆ addQuad()

P2Body& s3d::P2Body::addQuad ( const Quad localPos,
const P2Material material = {},
const P2Filter filter = {} 
)

凸な四角形の部品を物体に追加します。

Remarks
P2Quad の部品を物体に追加します。
Parameters
localPos物体のワールド座標から見たローカルでの形状の座標 (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
*this

◆ addRect()

P2Body& s3d::P2Body::addRect ( const RectF localPos,
const P2Material material = {},
const P2Filter filter = {} 
)

長方形の部品を物体に追加します。

Remarks
P2Rect の部品を物体に追加します。
Parameters
localPos物体のワールド座標から見たローカルでの形状の座標 (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
*this

◆ addTriangle()

P2Body& s3d::P2Body::addTriangle ( const Triangle localPos,
const P2Material material = {},
const P2Filter filter = {} 
)

三角形の部品を物体に追加します。

Remarks
P2Triangle の部品を物体に追加します。
Parameters
localPos物体のワールド座標から見たローカルでの形状の座標 (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
*this

◆ applyAngularImpulse()

P2Body& s3d::P2Body::applyAngularImpulse ( double  torque)
noexcept
Parameters
torque
Returns

◆ applyForce() [1/2]

P2Body& s3d::P2Body::applyForce ( Vec2  force)
noexcept
Parameters
force
Returns

◆ applyForce() [2/2]

P2Body& s3d::P2Body::applyForce ( Vec2  force,
Vec2  offset 
)
noexcept
Parameters
force
offset
Returns

◆ applyForceAt()

P2Body& s3d::P2Body::applyForceAt ( Vec2  force,
Vec2  pos 
)
noexcept
Parameters
force
pos
Returns

◆ applyLinearImpulse() [1/2]

P2Body& s3d::P2Body::applyLinearImpulse ( Vec2  force)
noexcept
Parameters
force
Returns

◆ applyLinearImpulse() [2/2]

P2Body& s3d::P2Body::applyLinearImpulse ( Vec2  force,
Vec2  offset 
)
noexcept
Parameters
force
offset
Returns

◆ applyLinearImpulseAt()

P2Body& s3d::P2Body::applyLinearImpulseAt ( Vec2  force,
Vec2  pos 
)
noexcept
Parameters
force
pos
Returns

◆ applyTorque()

P2Body& s3d::P2Body::applyTorque ( double  torque)
noexcept
Parameters
torque
Returns

◆ as()

template<class PShape , std::enable_if_t< std::is_base_of_v< P2Shape, PShape >> * = nullptr>
std::shared_ptr<PShape> s3d::P2Body::as ( size_t  index) const

物体の部品を P2Shape を継承するクラスのポインタとして返します。

Template Parameters
PShape2D 物理演算図形型 (P2Line, P2Circle など)
Parameters
index部品のインデックス
Returns
部品が存在し、図形型が一致した場合はそのポインタ、それ以外の場合は null にセットされたポインタ

◆ draw()

const P2Body& s3d::P2Body::draw ( const ColorF color = Palette::White) const

物体のすべての部品を描画します。

Parameters
color
Returns
*this

◆ drawFrame()

const P2Body& s3d::P2Body::drawFrame ( double  thickness = 1.0,
const ColorF color = Palette::White 
) const

物体のすべての部品の枠を描画します。

Parameters
thickness線の太さ(ピクセル)
color
Returns
*this

◆ drawWireframe()

const P2Body& s3d::P2Body::drawWireframe ( double  thickness = 1.0,
const ColorF color = Palette::White 
) const

物体のすべての部品をワイヤフレーム表示します。

Parameters
thickness線の太さ(ピクセル)
color
Returns
*this

◆ getAngle()

double s3d::P2Body::getAngle ( ) const
noexcept

物体の回転角度(ラジアン)を返します。

Returns
物体の回転角度(ラジアン)

◆ getAngularDamping()

double s3d::P2Body::getAngularDamping ( ) const
noexcept
Returns

◆ getAngularVelocity()

double s3d::P2Body::getAngularVelocity ( ) const
noexcept

物体の現在の角速度 (rad/s) を返します。

Remarks
毎秒何ラジアン回転するかを示します。2π は時計回りに 1 周です。
Returns
物体の現在の角速度 (rad/s)

◆ getBodyType()

P2BodyType s3d::P2Body::getBodyType ( ) const
noexcept
Returns

◆ getDamping()

double s3d::P2Body::getDamping ( ) const
noexcept
Returns

◆ getGravityScale()

double s3d::P2Body::getGravityScale ( ) const
noexcept
Returns

◆ getInertia()

double s3d::P2Body::getInertia ( ) const
noexcept
Returns

◆ getMass()

double s3d::P2Body::getMass ( ) const
noexcept

物体の重量 (kg) を返します。

Returns
物体の重量 (kg)

◆ getPos()

Vec2 s3d::P2Body::getPos ( ) const
noexcept

物体のワールド座標 (cm) を返します。

Returns
物体のワールド座標 (cm)

◆ getPtr()

const std::shared_ptr<P2Shape>& s3d::P2Body::getPtr ( size_t  index) const
noexcept
Parameters
index
Returns

◆ getSleepEnabled()

bool s3d::P2Body::getSleepEnabled ( ) const
noexcept
Returns

◆ getTransform()

std::pair<Vec2, double> s3d::P2Body::getTransform ( ) const
noexcept
Returns

◆ getVelocity()

Vec2 s3d::P2Body::getVelocity ( ) const
noexcept

物体の現在の速度 (cm/s) を返します。

Returns
物体の現在の速度 (cm/s)

◆ id()

P2BodyID s3d::P2Body::id ( ) const
noexcept

物体の ID を返します。

Returns
物体の ID

◆ isAwake()

bool s3d::P2Body::isAwake ( ) const
noexcept
Returns

◆ isEmpty()

bool s3d::P2Body::isEmpty ( ) const
noexcept

物体がワールドに存在しないかを返します

Returns
物体がワールドに存在しない場合 true, それ以外の場合は false

◆ isFixedRotation()

bool s3d::P2Body::isFixedRotation ( ) const
noexcept

物体の回転が有効であるか、現在の設定を返します。

Returns
物体の回転が有効の場合 true, それ以外の場合は false

◆ moveBy() [1/2]

P2Body& s3d::P2Body::moveBy ( double  x,
double  y 
)
noexcept
Parameters
x
y
Returns

◆ moveBy() [2/2]

P2Body& s3d::P2Body::moveBy ( Vec2  v)
noexcept
Parameters
v
Returns

◆ num_shapes()

size_t s3d::P2Body::num_shapes ( ) const
noexcept

物体が持つ部品の個数を返します。

Returns
物体が持つ部品の個数

◆ operator bool()

s3d::P2Body::operator bool ( ) const
explicitnoexcept

物体がワールドに存在するかを返します。

Returns
物体がワールドに存在する場合 true, それ以外の場合は false

◆ release()

void s3d::P2Body::release ( )

物体をワールドから明示的に削除します。

Remarks
デストラクタで自動的に削除されるため、必須ではありません。

◆ rotateBy()

P2Body& s3d::P2Body::rotateBy ( double  angle)
noexcept
Parameters
angle
Returns

◆ setAngle()

P2Body& s3d::P2Body::setAngle ( double  angle)
noexcept
Parameters
angle
Returns

◆ setAngularDamping()

P2Body& s3d::P2Body::setAngularDamping ( double  damping)
noexcept
Parameters
damping
Returns

◆ setAngularVelocity()

P2Body& s3d::P2Body::setAngularVelocity ( double  omega)
noexcept
Parameters
omega
Returns

◆ setAwake()

P2Body& s3d::P2Body::setAwake ( bool  awake)
noexcept
Parameters
awake
Returns

◆ setBodyType()

P2Body& s3d::P2Body::setBodyType ( P2BodyType  bodyType)
noexcept
Parameters
bodyType
Returns

◆ setDamping()

P2Body& s3d::P2Body::setDamping ( double  damping)
noexcept
Parameters
damping
Returns

◆ setFixedRotation()

P2Body& s3d::P2Body::setFixedRotation ( bool  fixedRotation)
noexcept

物体の回転の無効・有効を設定します(デフォルトは有効)

Parameters
fixedRotation回転を有効にするか
Returns
*this

◆ setGravityScale()

P2Body& s3d::P2Body::setGravityScale ( double  scale)
noexcept
Parameters
scale
Returns

◆ setPos() [1/2]

P2Body& s3d::P2Body::setPos ( double  x,
double  y 
)
noexcept
Parameters
x
y
Returns

◆ setPos() [2/2]

P2Body& s3d::P2Body::setPos ( Vec2  pos)
noexcept
Parameters
pos
Returns

◆ setSleepEnabled()

P2Body& s3d::P2Body::setSleepEnabled ( bool  enabled)
noexcept
Parameters
enabled
Returns

◆ setTransform() [1/2]

P2Body& s3d::P2Body::setTransform ( double  x,
double  y,
double  angle 
)
noexcept
Parameters
x
y
angle
Returns

◆ setTransform() [2/2]

P2Body& s3d::P2Body::setTransform ( Vec2  pos,
double  angle 
)
noexcept
Parameters
pos
angle
Returns

◆ setVelocity()

P2Body& s3d::P2Body::setVelocity ( Vec2  v)
noexcept
Parameters
v
Returns

◆ shape() [1/2]

P2Shape& s3d::P2Body::shape ( size_t  index)
Parameters
index
Returns

◆ shape() [2/2]

const P2Shape& s3d::P2Body::shape ( size_t  index) const
Parameters
index
Returns


The documentation for this class was generated from the following file: