GameObj
Game Object (GameObj) is a Dynamic object within the game that can occupy a position of the world, including a Container. Game Objects are the most common of all Objects and can have Variables and/or Modules attached to them.
A potion, a monster, a door, and a sword are all examples of GameObjs.
Game Object Properties
Official Docs: lua-reference/gameobj.html
Id
:The unique Id of a GameObject, Ids are unique on a per cluster basis.- Getting the Id of a gameObject:
mId = mObj.Id
- Setter: Gameobject Ids cannot be set. They are created and assigned by the engine on object creation.
- Referencing a gameobject from a known Id(=number):
mGameObj = GameObj(mId)
- Getting the Id of a gameObject:
Name
: The name of a gameobject, visible in game.- Getter:
mName = mObj:GetName()
- Setter:
mObj:SetName("Samogh the Blacksmith")
- Getter:
Hue
: The hue of an object which mixes with the texture colors. You cannot force an object to be magenta, when its texture color is green.- Getter:
mHue = mObj:GetHue()
- Setter:
mObj:SetHue("FF0000")
- Getter:
Location
: Location of the object in the world- Getter:
mLoc = mObj:GetLoc()
- Setter:
mObj:SetWorldPosition(Loc(0,0,0))
The example positions the object at the world origin. - Setter2:
mObj:MoveToContainer(mBag, Loc(0,0,0))
Object gets put into container mBag at relative coordinates 0,0,0 inside the container. - You can use SetWorldPosition() to move an object out of a container into the world.
- Getter:
Rotation
: Rotation of the object in its own local coordinate system- Getter:
mRot = mObj:GetRotation()
Returns a Loc object whith three angles in degrees which describe the object rotation around the axis x,y and z. The order of rotation is: z, y, x (The Unity standard of rotation) - Setter:
mObj:SetRotation(Loc(45,30,60))
The example sets the rotation of the object to 60° around its Z axis, 45° around its X axis and 30° around its Y axis.
- Getter:
Scale
: Scaling of the object in its own local coordinate system- Getter:
mScale = mObj:GetScale()
Returns a Loc object whith three scale factors which describe the object scaling in each axis x,y and z. - Setter:
mObj:SetScale(Loc(2,4,2))
The example sets the scale of the object to 2x at its x and Z axis, and 4x at its X axis. So it is 2 times taller than wide and stretched up high (y-axis). This has been changed. Formerly (pre 0.3.5) Scale was only scalar, now its a vector.
- Getter:
Object Variables
: A gameobject can have Object Variables, additional data we can assign, query, change and delete from script.- Getter:
mValue = mObj:GetObjVar("MyVariable")
- Getter2:
mBool = mObj:HasObjVar("MyVariable")
Returns a boolean if the ObjVar exists. - Setter:
mObj:SetObjVar("MyVariable", SomeValue)
Type of the ObjVar is the type of the value assigned. - Deletion:
mObj:DelObjVar("MyVariable")
- Caveat: SetObjVar is asynchronous, when used from another object and synchronous when used from script attached to the object itself. This means, setting an objvar on another object than the one the script is running on will not be available immediately !!!
- Getter:
Tips
- Obj variables should only contain data you are intending to persist to disk, especially since reading from an ObjVar immediately after setting it will not always return the new value.
- GameObj can communicate between each other using SendMessage just like Modules.