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

2D 物理演算を行うワールド More...

#include <P2World.hpp>

Public Member Functions

SIV3D_NODISCARD_CXX20 P2World (double gravity=980)
 2D 物理演算を行うワールドを作成します。 More...
 
SIV3D_NODISCARD_CXX20 P2World (Vec2 gravity)
 2D 物理演算を行うワールドを作成します。 More...
 
void update (double timeStep=Scene::DeltaTime(), int32 velocityIterations=6, int32 positionIterations=2) const
 2D 物理演算のワールドの状態を更新します。 More...
 
void setSleepEnabled (bool enabled)
 ワールド内の物体がスリープ状態になることを許可・不許可を設定します(デフォルトでは許可)。 More...
 
bool getSleepEnabled () const
 ワールド内の物体がスリープ状態になることを許可しているかの現在の設定を返します。 More...
 
void setGravity (double gravity)
 重力加速度 (cm/s^2) を設定します。 More...
 
void setGravity (const Vec2 &gravity)
 重力加速度 (cm/s^2) を設定します。 More...
 
Vec2 getGravity () const
 現在の重力加速度の設定を返します。 More...
 
void shiftOrigin (const Vec2 &newOrigin)
 ワールドの物体全ての座標 (cm) をシフトします。 More...
 
P2Body createPlaceholder (P2BodyType bodyType, const Vec2 &worldPos)
 プレースホルダーとなる物体を作成します。 More...
 
P2Body createLine (P2BodyType bodyType, const Vec2 &worldPos, const Line &localPos, OneSided oneSided=OneSided::No, const P2Material &material={}, const P2Filter &filter={})
 線分を部品として持つ物体を作成します。 More...
 
P2Body createLineString (P2BodyType bodyType, const Vec2 &worldPos, const LineString &localPos, OneSided oneSided=OneSided::No, const P2Material &material={}, const P2Filter &filter={})
 連続する複数の線分を部品として持つ物体を作成します。 More...
 
P2Body createClosedLineString (P2BodyType bodyType, const Vec2 &worldPos, const LineString &localPos, OneSided oneSided=OneSided::No, const P2Material &material={}, const P2Filter &filter={})
 連続する複数の線分(終点と始点を結ぶ)を部品として持つ物体を作成します。 More...
 
P2Body createCircle (P2BodyType bodyType, const Vec2 &worldPos, double r, const P2Material &material={}, const P2Filter &filter={})
 円を部品として持つ物体を作成します。 More...
 
P2Body createCircle (P2BodyType bodyType, const Vec2 &worldPos, const Circle &localPos, const P2Material &material={}, const P2Filter &filter={})
 円を部品として持つ物体を作成します。 More...
 
P2Body createCircleSensor (P2BodyType bodyType, const Vec2 &worldPos, double r, const P2Filter &filter={})
 円形のセンサー部品を持つ物体を作成します。 More...
 
P2Body createRect (P2BodyType bodyType, const Vec2 &worldPos, double size, const P2Material &material={}, const P2Filter &filter={})
 正方形を部品として持つ物体を作成します。 More...
 
P2Body createRect (P2BodyType bodyType, const Vec2 &worldPos, const SizeF &size, const P2Material &material={}, const P2Filter &filter={})
 長方形を部品として持つ物体を作成します。 More...
 
P2Body createRect (P2BodyType bodyType, const Vec2 &worldPos, const RectF &localPos, const P2Material &material={}, const P2Filter &filter={})
 長方形を部品として持つ物体を作成します。 More...
 
P2Body createTriangle (P2BodyType bodyType, const Vec2 &worldPos, const Triangle &localPos, const P2Material &material={}, const P2Filter &filter={})
 三角形を部品として持つ物体を作成します。 More...
 
P2Body createQuad (P2BodyType bodyType, const Vec2 &worldPos, const Quad &localPos, const P2Material &material={}, const P2Filter &filter={})
 凸な四角形を部品として持つ物体を作成します。 More...
 
P2Body createPolygon (P2BodyType bodyType, const Vec2 &worldPos, const Polygon &localPos, const P2Material &material={}, const P2Filter &filter={})
 多角形を部品として持つ物体を作成します。 More...
 
P2Body createPolygons (P2BodyType bodyType, const Vec2 &worldPos, const MultiPolygon &localPos, const P2Material &material={}, const P2Filter &filter={})
 複数の多角形を部品として持つ物体を作成します。 More...
 
P2PivotJoint createPivotJoint (const P2Body &bodyA, const P2Body &bodyB, const Vec2 &worldAnchorPos, EnableCollision enableCollision=EnableCollision::No)
 回転ジョイントを作成します。 More...
 
P2DistanceJoint createDistanceJoint (const P2Body &bodyA, const Vec2 &worldAnchorPosA, const P2Body &bodyB, const Vec2 &worldAnchorPosB, double length, EnableCollision enableCollision=EnableCollision::No)
 距離ジョイントを作成します。 More...
 
P2SliderJoint createSliderJoint (const P2Body &bodyA, const P2Body &bodyB, const Vec2 &worldAnchorPos, const Vec2 &normalizedAxis, EnableCollision enableCollision=EnableCollision::No)
 スライダージョイントを作成します。 More...
 
P2WheelJoint createWheelJoint (const P2Body &bodyA, const P2Body &bodyB, const Vec2 &worldAnchorPos, const Vec2 &normalizedAxis, EnableCollision enableCollision=EnableCollision::No)
 ホイールジョイントを作成します。 More...
 
P2MouseJoint createMouseJoint (const P2Body &body, const Vec2 &worldTargetPos)
 マウスジョイントを作成します。 More...
 
const HashTable< P2ContactPair, P2Collision > & getCollisions () const noexcept
 物体の接触情報の一覧を返します。 More...
 

Detailed Description

2D 物理演算を行うワールド

Constructor & Destructor Documentation

◆ P2World() [1/2]

SIV3D_NODISCARD_CXX20 s3d::P2World::P2World ( double  gravity = 980)
explicit

2D 物理演算を行うワールドを作成します。

Parameters
gravity重力加速度 (cm/s^2)

◆ P2World() [2/2]

SIV3D_NODISCARD_CXX20 s3d::P2World::P2World ( Vec2  gravity)
explicit

2D 物理演算を行うワールドを作成します。

Parameters
gravity重力加速度のベクトル (cm/s^2)

Member Function Documentation

◆ createCircle() [1/2]

P2Body s3d::P2World::createCircle ( P2BodyType  bodyType,
const Vec2 worldPos,
const Circle localPos,
const P2Material material = {},
const P2Filter filter = {} 
)

円を部品として持つ物体を作成します。

Remarks
物体は P2Circle の部品を持ちます。
Parameters
bodyType物体の種類
worldPos物体のワールド座標 (cm)
localPosworldPos から見たローカルでの形状の座標 (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
作成した物体

◆ createCircle() [2/2]

P2Body s3d::P2World::createCircle ( P2BodyType  bodyType,
const Vec2 worldPos,
double  r,
const P2Material material = {},
const P2Filter filter = {} 
)

円を部品として持つ物体を作成します。

Remarks
物体は P2Circle の部品を持ちます。
円の中心座標は worldPos です。
Parameters
bodyType物体の種類
worldPos物体のワールド座標 (cm)
r円形の部品の半径 (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
作成した物体

◆ createCircleSensor()

P2Body s3d::P2World::createCircleSensor ( P2BodyType  bodyType,
const Vec2 worldPos,
double  r,
const P2Filter filter = {} 
)

円形のセンサー部品を持つ物体を作成します。

Remarks
物体は P2Circle の部品を持ちます。
センサーは他の物体と干渉しませんが接触情報は発生します。
Parameters
bodyType物体の種類
worldPos物体のワールド座標 (cm)
rセンサーの半径 (cm)
filterセンサーの干渉フィルタ
Returns
作成した物体

◆ createClosedLineString()

P2Body s3d::P2World::createClosedLineString ( P2BodyType  bodyType,
const Vec2 worldPos,
const LineString localPos,
OneSided  oneSided = OneSided::No,
const P2Material material = {},
const P2Filter filter = {} 
)

連続する複数の線分(終点と始点を結ぶ)を部品として持つ物体を作成します。

Remarks
物体は P2LineString の部品を持ちます。
Parameters
bodyType物体の種類(P2BodyType::Dynamic は指定不可)
worldPos物体のワールド座標 (cm)
localPosworldPos から見たローカルでの形状の座標 (cm)
oneSided線分の片側(右に向かうときの上側)のみ干渉するか
material部品の材質
filter部品の干渉フィルタ
Returns
作成した物体

◆ createDistanceJoint()

P2DistanceJoint s3d::P2World::createDistanceJoint ( const P2Body bodyA,
const Vec2 worldAnchorPosA,
const P2Body bodyB,
const Vec2 worldAnchorPosB,
double  length,
EnableCollision  enableCollision = EnableCollision::No 
)

距離ジョイントを作成します。

Parameters
bodyA接続する物体 A
worldAnchorPosA物体 A のジョイントのワールド座標 (cm)
bodyB接続する物体 B
worldAnchorPosB物体 B のジョイントのワールド座標 (cm)
lengthジョイントの静止長 (cm)
enableCollision接続した物体どうしの衝突を有効にするか
Returns
作成したジョイント

◆ createLine()

P2Body s3d::P2World::createLine ( P2BodyType  bodyType,
const Vec2 worldPos,
const Line localPos,
OneSided  oneSided = OneSided::No,
const P2Material material = {},
const P2Filter filter = {} 
)

線分を部品として持つ物体を作成します。

Remarks
物体は P2Line の部品を持ちます。
Parameters
bodyType物体の種類(P2BodyType::Dynamic は指定不可)
worldPos物体のワールド座標 (cm)
localPosworldPos から見たローカルでの形状の座標 (cm)
oneSided線分の片側(右に向かうときの上側)のみ干渉するか
material部品の材質
filter部品の干渉フィルタ
Returns
作成した物体

◆ createLineString()

P2Body s3d::P2World::createLineString ( P2BodyType  bodyType,
const Vec2 worldPos,
const LineString localPos,
OneSided  oneSided = OneSided::No,
const P2Material material = {},
const P2Filter filter = {} 
)

連続する複数の線分を部品として持つ物体を作成します。

Remarks
物体は P2LineString の部品を持ちます。
Parameters
bodyType物体の種類(P2BodyType::Dynamic は指定不可)
worldPos物体のワールド座標 (cm)
localPosworldPos から見たローカルでの形状の座標 (cm)
oneSided線分の片側(右に向かうときの上側)のみ干渉するか
material部品の材質
filter部品の干渉フィルタ
Returns
作成した物体

◆ createMouseJoint()

P2MouseJoint s3d::P2World::createMouseJoint ( const P2Body body,
const Vec2 worldTargetPos 
)

マウスジョイントを作成します。

Parameters
body接続する物体
worldTargetPosターゲットのワールド座標 (cm)
Returns
作成したジョイント

◆ createPivotJoint()

P2PivotJoint s3d::P2World::createPivotJoint ( const P2Body bodyA,
const P2Body bodyB,
const Vec2 worldAnchorPos,
EnableCollision  enableCollision = EnableCollision::No 
)

回転ジョイントを作成します。

Parameters
bodyA接続する物体
bodyB接続する物体
worldAnchorPosジョイントのワールド座標 (cm)
enableCollision接続した物体どうしの衝突を有効にするか
Returns
作成したジョイント

◆ createPlaceholder()

P2Body s3d::P2World::createPlaceholder ( P2BodyType  bodyType,
const Vec2 worldPos 
)

プレースホルダーとなる物体を作成します。

Remarks
プレースホルダーは、部品を持っていない状態の物体です。何もないところにジョイントを作ったり、あとから部品を追加する目的で使います。
Parameters
bodyType物体の種類
worldPos物体のワールド座標
Returns
作成した物体

◆ createPolygon()

P2Body s3d::P2World::createPolygon ( P2BodyType  bodyType,
const Vec2 worldPos,
const Polygon localPos,
const P2Material material = {},
const P2Filter filter = {} 
)

多角形を部品として持つ物体を作成します。

Remarks
物体は P2Polygon の部品を持ちます。
Parameters
bodyType物体の種類
worldPos物体のワールド座標 (cm)
localPosworldPos から見たローカルでの形状の座標 (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
作成した物体

◆ createPolygons()

P2Body s3d::P2World::createPolygons ( P2BodyType  bodyType,
const Vec2 worldPos,
const MultiPolygon localPos,
const P2Material material = {},
const P2Filter filter = {} 
)

複数の多角形を部品として持つ物体を作成します。

Remarks
物体は複数の P2Polygon の部品を持ちます。
Parameters
bodyType物体の種類
worldPos物体のワールド座標 (cm)
localPosworldPos から見たローカルでの形状の座標 (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
作成した物体

◆ createQuad()

P2Body s3d::P2World::createQuad ( P2BodyType  bodyType,
const Vec2 worldPos,
const Quad localPos,
const P2Material material = {},
const P2Filter filter = {} 
)

凸な四角形を部品として持つ物体を作成します。

Remarks
物体は P2Quad の部品を持ちます。
Parameters
bodyType物体の種類
worldPos物体のワールド座標 (cm)
localPosworldPos から見たローカルでの形状の座標 (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
作成した物体

◆ createRect() [1/3]

P2Body s3d::P2World::createRect ( P2BodyType  bodyType,
const Vec2 worldPos,
const RectF localPos,
const P2Material material = {},
const P2Filter filter = {} 
)

長方形を部品として持つ物体を作成します。

Remarks
物体は P2Rect の部品を持ちます。
Parameters
bodyType物体の種類
worldPos物体のワールド座標 (cm)
localPosworldPos から見たローカルでの形状の座標 (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
作成した物体

◆ createRect() [2/3]

P2Body s3d::P2World::createRect ( P2BodyType  bodyType,
const Vec2 worldPos,
const SizeF size,
const P2Material material = {},
const P2Filter filter = {} 
)

長方形を部品として持つ物体を作成します。

Remarks
物体は P2Rect の部品を持ちます。
長方形の中心座標は worldPos です。
Parameters
bodyType物体の種類
worldPos物体のワールド座標 (cm)
size長方形の幅と高さ (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
作成した物体

◆ createRect() [3/3]

P2Body s3d::P2World::createRect ( P2BodyType  bodyType,
const Vec2 worldPos,
double  size,
const P2Material material = {},
const P2Filter filter = {} 
)

正方形を部品として持つ物体を作成します。

Remarks
物体は P2Rect の部品を持ちます。
正方形の中心座標は worldPos です。
Parameters
bodyType物体の種類
worldPos物体のワールド座標 (cm)
size正方形の一辺の長さ (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
作成した物体

◆ createSliderJoint()

P2SliderJoint s3d::P2World::createSliderJoint ( const P2Body bodyA,
const P2Body bodyB,
const Vec2 worldAnchorPos,
const Vec2 normalizedAxis,
EnableCollision  enableCollision = EnableCollision::No 
)

スライダージョイントを作成します。

Parameters
bodyA接続する物体 A
bodyB接続する物体 B
worldAnchorPosジョイントのワールド座標 (cm)
normalizedAxisスライダーの方向の単位ベクトル
enableCollision接続した物体どうしの衝突を有効にするか
Returns
作成したジョイント

◆ createTriangle()

P2Body s3d::P2World::createTriangle ( P2BodyType  bodyType,
const Vec2 worldPos,
const Triangle localPos,
const P2Material material = {},
const P2Filter filter = {} 
)

三角形を部品として持つ物体を作成します。

Remarks
物体は P2Triangle の部品を持ちます。
Parameters
bodyType物体の種類
worldPos物体のワールド座標 (cm)
localPosworldPos から見たローカルでの形状の座標 (cm)
material部品の材質
filter部品の干渉フィルタ
Returns
作成した物体

◆ createWheelJoint()

P2WheelJoint s3d::P2World::createWheelJoint ( const P2Body bodyA,
const P2Body bodyB,
const Vec2 worldAnchorPos,
const Vec2 normalizedAxis,
EnableCollision  enableCollision = EnableCollision::No 
)

ホイールジョイントを作成します。

Parameters
bodyA接続する物体 A
bodyB接続する物体 B
worldAnchorPosジョイントのワールド座標 (cm)
normalizedAxis軸の方向の単位ベクトル
enableCollision接続した物体どうしの衝突を有効にするか
Returns
作成したジョイント

◆ getCollisions()

const HashTable<P2ContactPair, P2Collision>& s3d::P2World::getCollisions ( ) const
noexcept

物体の接触情報の一覧を返します。

Returns
物体の接触情報の一覧

◆ getGravity()

Vec2 s3d::P2World::getGravity ( ) const

現在の重力加速度の設定を返します。

Returns
現在の重力加速度の設定 (cm/s^2)

◆ getSleepEnabled()

bool s3d::P2World::getSleepEnabled ( ) const

ワールド内の物体がスリープ状態になることを許可しているかの現在の設定を返します。

Returns
スリープを許可している場合 true, 許可していない場合 false

◆ setGravity() [1/2]

void s3d::P2World::setGravity ( const Vec2 gravity)

重力加速度 (cm/s^2) を設定します。

Parameters
gravity重力加速度のベクトル (cm/s^2)

◆ setGravity() [2/2]

void s3d::P2World::setGravity ( double  gravity)

重力加速度 (cm/s^2) を設定します。

Remarks
setGravity(Vec2{ 0, gravity }) と同じです。
Parameters
gravity重力加速度 (cm/s^2)

◆ setSleepEnabled()

void s3d::P2World::setSleepEnabled ( bool  enabled)

ワールド内の物体がスリープ状態になることを許可・不許可を設定します(デフォルトでは許可)。

Parameters
enabled許可する場合 true, 許可しない場合 false

◆ shiftOrigin()

void s3d::P2World::shiftOrigin ( const Vec2 newOrigin)

ワールドの物体全ての座標 (cm) をシフトします。

Parameters
newOriginシフト量 (cm)

◆ update()

void s3d::P2World::update ( double  timeStep = Scene::DeltaTime(),
int32  velocityIterations = 6,
int32  positionIterations = 2 
) const

2D 物理演算のワールドの状態を更新します。

Parameters
timeStepタイムステップ(秒)
velocityIterations物体の衝突時の速度の補正の回数
positionIterations物体の衝突時の位置の補正の回数

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