Most asked questions |
Top Previous Next |
Q: How do you get one actor to follow another? A: Here's a modified action from the A5 demo project.
entity* robot_boss;
action robot_master { robot_boss = my; // put the rest of your code here // ........ }
action robot_slave { var slave_target; var slave_speed; while (robot_boss == null) {wait (1);} while (1) { my.tilt = 0; slave_target.x = robot_boss.x - 50 * cos (robot_boss.pan); // stay 50 quants slave_target.y = robot_boss.y - 50 * sin (robot_boss.pan); // behind robot_boss slave_target.z = robot_boss.z; slave_speed.x = 7 * time; slave_speed.y = 0; vec_set (temp, my.x); temp.z -= 1000; trace_mode = ignore_me + ignore_sprites + ignore_models + use_box; slave_speed.z = -trace (my.x, temp); vec_set (temp.x, slave_target.x); vec_sub (temp.x, my.x); vec_to_angle (my.pan, temp); if (abs(slave_target.x - my.x) + abs(slave_target.y - my.y) > 30) { ent_move (slave_speed, nullvector); ent_cycle("walk", my.skill10); // play walk frames animation my.skill10 += 5 * time; my.skill10 %= 100; } wait (1); } }
Q: I'm trying to write my own weapons. How can I attach particles to the trace instruction? I don't want the script written for me just an idea. A: Trace sets "target" to the coordinates of the hit point. Place the line below after your trace instruction.
effect(your_particle_function, number_of_particles, target, initial_particle_speed);
Example: effect(hit_sparks, 10, target, vector(1, 1, 2));
Q: I have a model of a tree. I want to be able to walk right up to the trunk, but the bounding box won't allow me to do that because of the leaves. A: Follow these simple steps:
- Add the tree model to your level and make it passable;
- Place a cylinder (a primitive) with 6-16 faces at the same position with the trunk and make it invisible.
Q: How can I close a gate (as a trap) behind the player if he's walking through a laser beam? A: Place an entity close to the laser beam and attach it the action named "door_trigger". Create a wmb entity for the door and attach it the action named "door_trap".
entity* door_t;
action door_trigger { my.invisible = on; my.passable = on; while (player == null) {wait (1);} while (door_t == null) {wait (1);} while (vec_dist(player.x, my.x) > 100) {wait (1);} while (door_t.z > 0) // final z = 0, play with this value { door_t.z -= 3 * time; // 3 = speed wait (1); } door_t.z = 0; // the door moves from 100 to 0 quants in this example }
action door_trap { door_t = my; my.z = 100; // initial z, play with this value }
Q: I'm making a game and I was wondering know can I insert a movie (avi) file. At a certain point the movie would be triggered. A: Place any entity in your level and attach it the "movie_trigger" action; come close to it to start the movie.
action movie_trigger { my.passable = on; while (player == null) {wait (1);} while (vec_dist(player.x, my.x) > 100) {wait (1);} media_play("my_movie.avi", null, 50); }
Q: How can we make big levels with terrains but don't lose performance ? A: Use several (smaller) terrain entities, and then use fog and decent camera.clip_far values. Take a look at the picture below: all the blue terrains will be rendered (this happens even if a single vertex is inside the camera.clip_far range), while the violet terrains won't be rendered. Don't forget to glue your terrains together nicely; I left that black space between them on purpose, because I wanted you to see them as separate pieces.
|