diff options
author | Agustin Benavidez <agustinbenavidez@gmail.com> | 2016-05-21 06:35:55 -0300 |
---|---|---|
committer | Rémi Verschelde <remi@verschelde.fr> | 2016-05-21 11:35:55 +0200 |
commit | 97da9f14abfbbfd8a27f12afef0cd7c46fa425a6 (patch) | |
tree | 270aca85e170adbbc991edd1f96ee3ab3efd1d6c | |
parent | 436debb0450baffc44956523b8277ecf1a477b7a (diff) | |
download | redot-engine-97da9f14abfbbfd8a27f12afef0cd7c46fa425a6.tar.gz |
Add get_linear_velocity() method to VehicleBody class
Doc added also.
-rw-r--r-- | doc/base/classes.xml | 14 | ||||
-rw-r--r-- | scene/3d/vehicle_body.cpp | 8 | ||||
-rw-r--r-- | scene/3d/vehicle_body.h | 3 |
3 files changed, 23 insertions, 2 deletions
diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 653fa44d99..64d4100ced 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -41501,6 +41501,20 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> + <method name="get_linear_velocity" qualifiers="const"> + <return type="Vector3"> + </return> + <description> + Returns the vehicle body speed or velocity in a 3D vector, to get the speed in scalar value + get the length of the return vector, the scalar value is in Godot units/seconds, if you + assume 1.0 is a meter, then it is in meters/sec + Example: + # vehicle is an instance of VehicleBody, 1.0 asumed as 1 meter: + var speed_ms = vehicle.get_linear_velocity().length() + # Lets convert it to Km/h: + var speed_kms = speed_ms * 3.6 + </description> + </method> </methods> <constants> </constants> diff --git a/scene/3d/vehicle_body.cpp b/scene/3d/vehicle_body.cpp index ba30c118f0..6eadc71d63 100644 --- a/scene/3d/vehicle_body.cpp +++ b/scene/3d/vehicle_body.cpp @@ -936,7 +936,7 @@ void VehicleBody::_direct_state_changed(Object *p_state) { wheel.m_deltaRotation *= real_t(0.99);//damping of rotation when not in contact } - + linear_velocity = s->get_linear_velocity(); } void VehicleBody::set_mass(real_t p_mass) { @@ -990,6 +990,10 @@ float VehicleBody::get_steering() const{ return m_steeringValue; } +Vector3 VehicleBody::get_linear_velocity() +{ + return linear_velocity; +} void VehicleBody::_bind_methods(){ @@ -1008,6 +1012,8 @@ void VehicleBody::_bind_methods(){ ObjectTypeDB::bind_method(_MD("set_steering","steering"),&VehicleBody::set_steering); ObjectTypeDB::bind_method(_MD("get_steering"),&VehicleBody::get_steering); + ObjectTypeDB::bind_method(_MD("get_linear_velocity"),&VehicleBody::get_linear_velocity); + ObjectTypeDB::bind_method(_MD("_direct_state_changed"),&VehicleBody::_direct_state_changed); ADD_PROPERTY( PropertyInfo(Variant::REAL,"motion/engine_force",PROPERTY_HINT_RANGE,"0.00,1024.0,0.01"),_SCS("set_engine_force"),_SCS("get_engine_force")); diff --git a/scene/3d/vehicle_body.h b/scene/3d/vehicle_body.h index 285cca142d..a026a10dff 100644 --- a/scene/3d/vehicle_body.h +++ b/scene/3d/vehicle_body.h @@ -177,7 +177,8 @@ public: void set_steering(float p_steering); float get_steering() const; - + + Vector3 get_linear_velocity(); VehicleBody(); }; |