- When using a Callback, make sure that before deleting the scheduler and timer, to first unsubscribe the timer. The order of operation should be as follows:
scheduler->unScheduleTimer(timer); //unschedule the timer delete timer; //delete the timer delete scheduler; //delete the callback
Using the Collision Detection System
- Make sure that the Broad Phase Boundary volume is set adequately. If your model serves as a floor, then set it as a Platform, else set it as a Sphere. If you do not do this, the engine will not have enough time to compute the proper Collision Normal. To set an entity as a platform, use the following method U4DEngine::U4DStaticModel::initAsPlatform.
Here is an example:
//Set the island as a platform island->initAsPlatform(true);
- When using disproportionate size objects, keep in mind the following
- The maximum width and length of the entity serving as a terrain is 10x10 units
- The minimum depth of the terrain object should be twice as deep as the colliding entity.
The colliding objects should be low-poly as much as possible. Too many vertices will slow down the engine while it tries to compute the proper Collision Maniforlds.
The collision filters work as follows:
-Collision Categories means: I am of type... -Collision Masks means: I collide with...
The collision group index, follows the following rule:
-if either fixture has a groupIndex of zero, use the category/mask rules as above -if both groupIndex values are non-zero but different, use the category/mask rules as above -if both groupIndex values are the same and positive, collide -if both groupIndex values are the same and negative, don't collide
- When using the Collision filters. The categories must be defined as bitflags, i.e. 0x0002, 0x0004, 0x0008, 0x0010 etc. The group index must be defined as signed integers.
- Use TinyPNG to compress your images. Using large images affects the engine.
Running the Digital Asset Exporter (DAE)
- Make sure that the objects selected are in object mode. The script will not run if the models are in Pose mode.
Creating a new project
- Make sure the Objective-C Automatic Reference Counting is set to No
- All skyboxes images need to be inverted verticaly. The images representing top and bottom must be rotate 180 degress and then inverted vertically.
Removing an entity from a game
Removing an entity from the scenegraph should be done as follows
U4DEngine::U4DEntity *parent=getParent(); //Get the entities parent parent->removeChild(this); //remove the entity