pyunity.physics.core module¶
Core classes of the PyUnity physics engine.
-
pyunity.physics.core.
Infinity
= inf¶ A representation of infinity
-
class
pyunity.physics.core.
PhysicMaterial
(restitution=0.75, friction=1, immutable=False)[source]¶ Bases:
object
Class to store data on a collider’s material.
Parameters: - restitution (float) – Bounciness of the material
- friction (float) – Friction of the material
-
restitution
¶ Bounciness of the material
Type: float
-
friction
¶ Friction of the material
Type: float
-
combine
¶ Combining function. -1 means minimum, 0 means average, and 1 means maximum
Type: int
-
class
pyunity.physics.core.
Manifold
(a, b, normal, penetration)[source]¶ Bases:
object
Class to store collision data.
Parameters:
-
class
pyunity.physics.core.
Collider
(transform, is_dummy=False)[source]¶ Bases:
pyunity.core.Component
Collider base class.
-
class
pyunity.physics.core.
SphereCollider
(transform)[source]¶ Bases:
pyunity.physics.core.Collider
A spherical collider that cannot be deformed.
-
SetSize
(radius, offset)[source]¶ Sets the size of the collider.
Parameters: - radius (float) – The radius of the collider.
- offset (Vector3) – Offset of the collider.
-
collidingWith
(other)[source]¶ Check to see if the collider is colliding with another collider.
Parameters: other (Collider) – Other collider to check against Returns: Collision data Return type: Manifold or None Notes
To check against another SphereCollider, the distance and the sum of the radii is checked.
To check against an AABBoxColider, the check is as follows:
- The sphere’s center is checked to see if it is inside the AABB.
- If it is, then the two are colliding.
- If it isn’t, then a copy of the position is clamped to the AABB’s bounds.
- Finally, the distance between the clamped position and the original position is measured.
- If the distance is bigger than the sphere’s radius, then the two are colliding.
- If not, then they aren’t colliding.
-
-
class
pyunity.physics.core.
AABBoxCollider
(transform)[source]¶ Bases:
pyunity.physics.core.Collider
An axis-aligned box collider that cannot be deformed.
-
collidingWith
(other)[source]¶ Check to see if the collider is colliding with another collider.
Parameters: other (Collider) – Other collider to check against Returns: Collision data Return type: Manifold or None Notes
To check against another AABBoxCollider, the corners are checked to see if they are inside the other collider.
To check against a SphereCollider, the check is as follows:
- The sphere’s center is checked to see if it is inside the AABB.
- If it is, then the two are colliding.
- If it isn’t, then a copy of the position is clamped to the AABB’s bounds.
- Finally, the distance between the clamped position and the original position is measured.
- If the distance is bigger than the sphere’s radius, then the two are colliding.
- If not, then they aren’t colliding.
-
-
class
pyunity.physics.core.
Rigidbody
(transform, dummy=False)[source]¶ Bases:
pyunity.core.Component
Class to let a GameObject follow physics rules.
-
mass
¶ Mass of the Rigidbody. Defaults to 100
Type: int or float
-
physicMaterial
¶ Physics material of the Rigidbody
Type: PhysicMaterial
-
position
¶ Position of the Rigidbody. It is assigned to its GameObject’s position when the CollHandler is created
Type: Vector3
-
Move
(dt)[source]¶ Moves all colliders on the GameObject by the Rigidbody’s velocity times the delta time.
Parameters: dt (float) – Time to simulate movement by
-
MovePos
(offset)[source]¶ Moves the rigidbody and its colliders by an offset.
Parameters: offset (Vector3) – Offset to move
-
-
class
pyunity.physics.core.
CollManager
[source]¶ Bases:
object
Manages the collisions between all colliders.
-
rigidbodies
¶ Dictionary of rigidbodies andthe colliders on the gameObject that the Rigidbody belongs to
Type: dict
-
dummyRigidbody
¶ A dummy rigidbody used when a GameObject has colliders but no rigidbody. It has infinite mass
Type: Rigidbody
-
AddPhysicsInfo
(scene)[source]¶ Get all colliders and rigidbodies from a specified scene. This overwrites the collider and rigidbody lists, and so can be called whenever a new collider or rigidbody is added or removed.
Parameters: scene (Scene) – Scene to search for physics info Notes
This function will overwrite the pre-existing dictionary of rigidbodies. When there are colliders but no rigidbody is on the GameObject, then they are placed in the dictionary with a dummy Rigidbody that has infinite mass and a default physic material. Thus, they cannot move.
-
GetRestitution
(a, b)[source]¶ Get the restitution needed for two rigidbodies, based on their combine function
Parameters: Returns: Restitution
Return type: float
-