There are many complex features , for example moving
platform requires multiply data, like starting point, ending
point, speed and offset.
Before that you must first learn about vectors.
I suggest you do search on Internet about vectors, so
you can more easily set the complex features.
In 3D editor the vector is defined by 2 points, and the 3D
engine in game converts those 2 points into a vector.
That vector will be used to determine the angles, positions
etc. Basically the vector is a set of 3 number (X,Y,Z), and
it haves it direction and the magnitude.
The first complex feature you will learn is the moving platform,
so create a new empty level, so you can test the all of the features.
The moving platform (class type "m") have 4 data slots:
➣Starting point of moving vector
➣Ending point of moving vector
➣Speed in deegres (to calculate how many second does it need to
go to the ending point and back use (360/speed)
➣Offset in deegres (0-360), it represents the how far it is from the
starting pointing at the beginning of the time.
You can see the structural implementation here:
Next up is the circling platform.
The circling (class type "c") have 4 data slots:
➣Pivot point of the platform (it's platform' center
most of the times)
➣Starting point of vector around which platforms circles
➣Ending point of vector around which platforms circles
➣Speed in deegres.
You can see the structural implementation here:
The rotating platforms (class type "r") have 7 data slots:
➣Pivot point (most usaully located in the center of platform)
➣Rotating on X axis in deegres per second
➣Rotating on Y axis in deegres per second
➣Rotating on Z axis in deegres per second
➣Offset rotation on X axis (0-360)
➣Offset rotation on Y axis (0-360)
➣Offset rotation on Z axis (0-360)
(offset means how it is already rotated when game starts)
You can see the structural implementation here:
The balancing platforms (class type "ba") have 4 data slots:
➣Pivot point ,which is also starting point of the rotate vector,
and the starting point of the falling vector.
➣Second point of rotating vector
➣Second point of falling vector.
➣Maximum fall angle.
Important: the second point of the falling vector must be
90 deegres away (CCW) from the second point of the rotating
vector relatively to Y axis.
You can see the structural implementation here:
The enemies (class type "eB" , "eS" and "eJ") have all the
same data meaning, it have two slots:
➣Maximum X distance from starting point
➣Maximum Z distance from starting point
You can see the structural implementation here:
The boosting circle (class type "bc") have only one slot:
➣Starting point of direction vector
➣Ending point of direction vector
You can see the structural implementation:
The axe (class type "axe") have 5 slots:
➣Button trigger ID (0 for always active)
➣Rotate speed in deegres
➣The second point of blade direction vector
➣The second point of rotate vector
➣Offset in deegres (0-360)
Important: the first point when filling a line must be upwards
the same way it is for swinging rope.
You can see the structural implementation Here:
The button (class type "button") , once when triggered, it moves
the "mtf" platforms to target position, and activates the axes
which have the first data slot same as the button trigger ID.
Button have 4 data slots:
➣Button trigger ID (1,2,3...)
➣The position where camera will be when button is pressed
➣The camera direction relatively to the previous point
➣Camera position after cutscene
Platform which will be moved to fixed position once the button
is triggered ("mtf") have 3 data slots
➣Button trigger ID
➣Starting position point
➣Target position point
You can see the structural implementation here:
The checkpoint (class type "cp") , is a AABB (box) collision, when
you touch it , it saves you to that point.
Button have 3 data slots:
➣The one point of AABB
➣The secon point of AABB
➣Angle of checkpoint (0-360)
The AABB is structured that way that one point should be at
bottom , and the another at the top , but with the different
X and Z coordinate from the previous point:
You can see the structural implementation here:
The last feature is invisible platform (class data "inv"), it haves
only one data slot:
➣The class data it will be , just invisible, it must be a tri/quad
with 0 data slots (most useful are 0, and s)
You must enter "invisible" mode by pressing key "I" on keyboard.
Notice how the platforms that are ovelaping the invisible
platforms have class data "d" , which that they doesn't collide
with the player ,meaning that there are less collisions , which
means the game will run faster.