Rally Rush
|
The enemy car, inherits CarPhysics subclass sandbox and uses a NavigationAgent3D to direct it. More...
#include <enemy_car.hpp>
Public Member Functions | |
virtual void | _enter_tree () override |
Call parent _enter_tree and fetch object references for later use. | |
virtual void | _process (double delta_time) override |
Update current navigation and acceleration. Recalculate path every recalc_frame_interval frames. Update CarPhysics sandbox functions to drive towards next path position. | |
void | damage () |
Destroy this object. | |
void | start_fleeing () |
Called from RallyRushGameMode shield pickup observer. Start fleeing from the player. | |
void | stop_fleeing () |
Called from RallyRushGameMode shield pickup end observer. Stop fleeing from the player. | |
![]() | |
virtual void | _enter_tree () override |
Enable _integrate_forces, fetch child nodes, and setup contact monitoring. | |
virtual void | _physics_process (double delta_time) override |
Fixed-interval process function. Split into process_oversteer and process_understeer. | |
void | process_oversteer (double delta_time) |
Process the current_oversteer member variable. | |
void | process_understeer (double delta_time) |
Process the current_understeer member variable. | |
virtual void | _integrate_forces (PhysicsDirectBodyState3D *state) override |
Custom force integrator. Split into integrate_steering, integrate_engine_acceleration and integrate_oversteer. After calling other integrate_* functions, applies local_velocity to state.velocity. | |
Vector3 | get_local_velocity () const |
Public getter for current local velocity. | |
Vector3 | local_to_world_velocity () const |
transform the current local_velocity to world coordinates | |
Vector3 | world_to_local_velocity () const |
transform the current world velocity to local coordinates | |
float | get_current_speed () const |
The current forward velocity (local_velocity.z) | |
void | set_target_speed (float target) |
The target speed. | |
float | get_target_speed () const |
The target speed. | |
void | set_current_steering (float steering) |
The current steering input. | |
float | get_current_steering () const |
The current steering input. | |
void | set_brake (bool value) |
True if the hand-brake is currently active. | |
bool | get_brake () const |
True if the hand-brake is currently active. | |
void | set_oversteer_curve (Ref< Curve > curve) |
The base curve used for oversteering. | |
Ref< Curve > | get_oversteer_curve () const |
The base curve used for oversteering. | |
void | set_oversteer_curve_x_scale (float scale) |
The amount of speed represented by x=1 on the oversteer curve. | |
float | get_oversteer_curve_x_scale () const |
The amount of speed represented by x=1 on the oversteer curve. | |
void | set_understeer_curve (Ref< Curve > curve) |
The base curve used for understeering. | |
Ref< Curve > | get_understeer_curve () const |
The base curve used for understeering. | |
void | set_understeer_curve_x_scale (float scale) |
The amount of speed represented by x=1 on the understeer curve. | |
float | get_understeer_curve_x_scale () const |
The amount of speed represented by x=1 on the understeer curve. | |
void | set_acceleration (float value) |
The base engine acceleration of this car. | |
float | get_acceleration () const |
The base engine acceleration of this car. | |
void | set_engine_brake_force (float value) |
The base engine braking force of this car. | |
float | get_engine_brake_force () const |
The base engine braking force of this car. | |
void | set_handbrake_force (float value) |
The amount of braking force applied by the handbrake. | |
float | get_handbrake_force () const |
The amount of braking force applied by the handbrake. | |
void | set_handbrake_oversteer (float value) |
The modifier applied to oversteering when the handbrake is active. | |
float | get_handbrake_oversteer () const |
The modifier applied to oversteering when the handbrake is active. | |
void | set_traction_recovery_speed (float value) |
The speed at which the car will return to regular traction after under- or oversteering. | |
float | get_traction_recovery_speed () const |
The speed at which the car will return to regular traction after under- or oversteering. | |
void | set_max_slide_speed (float value) |
The maximum sideways speed that can be reached while drifting. | |
float | get_max_slide_speed () const |
The maximum sideways speed that can be reached while drifting. | |
void | set_slide_speed_acceleration (float value) |
The sideways acceleration applied when drifting. | |
float | get_slide_speed_acceleration () const |
The sideways acceleration applied when drifting. | |
void | set_oversteer_speed_penalty (float value) |
Deceleration applied to forward speed when oversteering. | |
float | get_oversteer_speed_penalty () const |
Deceleration applied to forward speed when oversteering. | |
void | set_oversteer_brake_penalty (float value) |
Modifier applied to brake force when oversteering. | |
float | get_oversteer_brake_penalty () const |
Modifier applied to brake force when oversteering. | |
void | set_oversteer_steering_speed (float value) |
Modifier applied to brake force when oversteering. | |
float | get_oversteer_steering_speed () const |
Base amount of steering applied while oversteering. | |
void | set_slide_resistance (float value) |
Deceleration applied to sideways velocity. | |
float | get_slide_resistance () const |
Deceleration applied to sideways velocity. | |
void | set_steering_inward_speed (float value) |
Target amount of velocity towards the centre of a turn while steering. | |
float | get_steering_inward_speed () const |
Target amount of velocity towards the centre of a turn while steering. | |
Protected Member Functions | |
void | recalculate_navigation () |
Calculate a new path to the player. | |
![]() | |
void | integrate_steering (PhysicsDirectBodyState3D *state) |
Integrate steering into angular and local x velocities. As a side-effect this also applies sliding resistance and sliding recovery. Also detects crashes to avoid glitchy behaviour when accelerating into a wall. | |
void | integrate_engine_acceleration (PhysicsDirectBodyState3D *state) |
Apply velocity along local z. Accelerates towards value returned by get_true_target_speed at get_current_acceleration m/s^2. | |
void | integrate_oversteer (PhysicsDirectBodyState3D *state) |
Integrate oversteering to local_velocity to allow drifting. | |
void | on_body_shape_entered (RID body_rid, Node *node, int body_shape_index, int local_shape_index) |
Detect that an object started colliding with the wheels. | |
void | on_body_shape_exited (RID body_rid, Node *node, int body_shape_index, int local_shape_index) |
Detect that an object lost contact with the wheels. | |
float | evaluate_oversteer_curve (float speed) const |
evaluate the oversteer curve with a speed, taking *_x_scale into account | |
float | evaluate_understeer_curve (float speed) const |
evaluate the understeer curve with a speed, taking *_x_scale into account | |
float | get_true_target_speed () const |
Returns the maximum speed modified by under/oversteer. | |
bool | is_grounded () const |
Returns true if there is at least one contact with either of the wheels. | |
float | get_current_acceleration () const |
Returns acceleration, taking into account braking, throttle, and handbrake. | |
Private Member Functions | |
GDCLASS (EnemyCar, CarPhysics) | |
Static Private Member Functions | |
static void | _bind_methods () |
Register damage function. | |
Private Attributes | |
int | next_recalc {0} |
Frame timer to next recalculate_navigation call. | |
int | recalc_frame_interval {60} |
Interval in frames between calls to recalculate_navigation. | |
float | turn_target_speed {3.f} |
Desired speed when approaching a corner. | |
float | max_speed {45.f} |
Max speed when driving straight ahead. | |
float | brake_distance {7.f} |
Distance from corners at which to start braking. | |
float | steering_speed {1.5f} |
Speed at which to steer. | |
bool | flee {false} |
If true, invert goal direction and drive away from the player. | |
NavigationAgent3D * | agent {nullptr} |
Navigation agent child node. | |
CarPlayer * | player {nullptr} |
Reference to the player car. | |
The enemy car, inherits CarPhysics subclass sandbox and uses a NavigationAgent3D to direct it.
|
staticprivate |
Register damage function.
|
overridevirtual |
Call parent _enter_tree and fetch object references for later use.
Reimplemented from godot::CarPhysics.
|
overridevirtual |
Update current navigation and acceleration. Recalculate path every recalc_frame_interval frames. Update CarPhysics sandbox functions to drive towards next path position.
void godot::EnemyCar::damage | ( | ) |
Destroy this object.
|
private |
|
protected |
Calculate a new path to the player.
void godot::EnemyCar::start_fleeing | ( | ) |
Called from RallyRushGameMode shield pickup observer. Start fleeing from the player.
void godot::EnemyCar::stop_fleeing | ( | ) |
Called from RallyRushGameMode shield pickup end observer. Stop fleeing from the player.
|
private |
Navigation agent child node.
|
private |
Distance from corners at which to start braking.
|
private |
If true, invert goal direction and drive away from the player.
|
private |
Max speed when driving straight ahead.
|
private |
Frame timer to next recalculate_navigation call.
|
private |
Reference to the player car.
|
private |
Interval in frames between calls to recalculate_navigation.
|
private |
Speed at which to steer.
|
private |
Desired speed when approaching a corner.