pyunity.core module

Core classes for the PyUnity library.

This module has some key classes used throughout PyUnity, and have to be in the same file due to references both ways. Usually when you create a scene, you should never create Components directly, instead add them with AddComponent.

Examples

To create a GameObject with 2 children, one of which has its own child, and all have MeshRenderers:

>>> from pyunity import *
GLUT doesn't work, using GLFW
GLFW doesn't work, using Pygame
Loaded PyUnity version 0.0.1
Using window provider Pygame
>>> mat = Material((1, 0, 0))
>>> root = GameObject("Root")
>>> child1 = GameObject("Child1", root)
>>> child1.transform.position = Vector3(-2, 0, 0)
>>> renderer = child1.AddComponent(MeshRenderer)
>>> renderer.mat = mat
>>> renderer.mesh = Mesh.cube(2)
>>> child2 = GameObject("Child2", root)
>>> renderer = child2.AddComponent(MeshRenderer)
>>> renderer.mat = mat
>>> renderer.mesh = Mesh.quad(1)
>>> grandchild = GameObject("Grandchild", child2)
>>> grandchild.transform.position = Vector3(0, 5, 0)
>>> renderer = grandchild.AddComponent(MeshRenderer)
>>> renderer.mat = mat
>>> renderer.mesh = Mesh.cube(3)
>>> root.transform.List()
/Root
/Root/Child1
/Root/Child2
/Root/Child2/Grandchild
>>> child1.components
[<Transform position=<Vector3 x=-2 y=0 z=0> rotation=<Vector3 x=0 y=0 z=0> scale=<Vector3 x=1 y=1 z=1> path="/Root/Child1">, <pyunity.core.MeshRenderer object at 0x0B5E1B68>]
>>> child2.transform.children
[<Transform position=<Vector3 x=0 y=5 z=0> rotation=<Vector3 x=0 y=0 z=0> scale=<Vector3 x=1 y=1 z=1> path="/Root/Child2/Grandchild">]
class pyunity.core.Behaviour

Bases: pyunity.core.Component

Base class for behaviours that can be scripted.

gameObject

GameObject that the component belongs to.

Type

GameObject

transform

Transform that the component belongs to.

Type

Transform

Start()

Called every time a scene is loaded up.

Update(dt)

Called every frame.

Parameters

dt (float) – Time since last frame, sent by the scene that the Behaviour is in.

class pyunity.core.Camera

Bases: pyunity.core.Component

Component to hold data about the camera in a scene.

fov

Fov in degrees measured horizontally. Defaults to 90.

Type

int

near

Distance of the near plane in the camera frustrum. Defaults to 0.05.

Type

float

far

Distance of the far plane in the camera frustrum. Defaults to 100.

Type

float

clearColor

Tuple of 4 floats of the clear color of the camera. Defaults to (.1, .1, .1, 1). Color mode is RGBA.

Type

tuple

class pyunity.core.Component

Bases: object

Base class for built-in components.

gameObject

GameObject that the component belongs to.

Type

GameObject

transform

Transform that the component belongs to.

Type

Transform

AddComponent(component)

Calls AddComponent on the component’s GameObject.

Parameters

component (Component) – Component to add. Must inherit from Component

GetComponent(component)

Calls GetComponent on the component’s GameObject.

Parameters

componentClass (Component) – Component to get. Must inherit from Component

class pyunity.core.GameObject(name='GameObject', parent=None)

Bases: object

Class to create a GameObject, which is an object with components.

Parameters
  • name (str, optional) – Name of GameObject

  • parent (GameObject or None) – Parent of GameObject

name

Name of the GameObject

Type

str

components

List of components

Type

list

parent

Parent GameObject, if GameObject has one

Type

GameObject or None

tag

Tag that the GameObject has (defaults to tag 0 or Default)

Type

Tag

transform

Transform that belongs to the GameObject

Type

Transform

AddComponent(componentClass)

Adds a component to the GameObject. If it is a transform, set GameObject’s transform to it.

Parameters

componentClass (Component) – Component to add. Must inherit from Component

GetComponent(componentClass)

Gets a component from the GameObject. Will return first match. For all matches, do a manual loop.

Parameters

componentClass (Component) – Component to get. Must inherit from Component

class pyunity.core.Light

Bases: pyunity.core.Component

(Experimental) Component to hold data about the light in a scene.

Notes

Lighting is not working yet, so all MeshRenderers will only display a sillhouette.

class pyunity.core.Material(color)

Bases: object

Class to hold data on a material.

color

A list or tuple of 4 floats that make up a RGBA color.

Type

list or tuple

class pyunity.core.MeshRenderer

Bases: pyunity.core.Component

Component to render a mesh at the position of a transform.

mesh

Mesh that the MeshRenderer will render.

Type

Mesh

mat

Material to use for the mesh

Type

Material

move(transform)

Move the transformation matrix according to a transform.

Parameters

transform (Transform) – Transform to move the transformation matrix according to.

render()

Render the mesh that the MeshRenderer has.

Notes

It loops through the trianges in the mesh, then draws them. Each triangle has the same material, and when rendered, the mesh will be like a silhouette or shadow, do to the lack of lighting. When render is called, the MeshRenderer will call render on its own children, moving it accordingly. The render function assumes that the transform was applied already.

class pyunity.core.Tag(tagNumOrName)

Bases: object

Class to group GameObjects together without referencing the tags.

Parameters

tagNumOrName (str or int) – Name or index of the tag

Raises
  • ValueError – If there is no tag name

  • IndexError – If there is no tag at the provided index

  • TypeError – If the argument is not a str or int

tagName

Tag name

Type

str

tag

Tag index of the list of tags

Type

int

static AddTag(self, name)

Add a new tag to the tag list.

Parameters

name (str) – Name of the tag

Returns

The tag index

Return type

int

class pyunity.core.Transform

Bases: pyunity.core.Component

Class to hold data about a GameObject’s transformation.

gameObject

GameObject that the component belongs to.

Type

GameObject

position

Position of the Transform.

Type

Vector3

rotation

Rotation of the Transform.

Type

Vector3

scale

Scale of the Transform.

Type

Vector3

parent

Parent of the Transform. The hierarchical tree is actually formed by the Transform, not the GameObject.

Type

Transform or None

children

List of children

Type

list

FullPath()

Gets the full path of the Transform.

Returns

The full path of the Transform.

Return type

str

List()

Prints the Transform’s full path from the root, then lists the children in alphabetical order. This results in a nice list of all GameObjects.

ReparentTo(parent)

Reparent a Transform.

Parameters

parent (Transform) – The parent to reparent to.