Compare commits

...

4 commits

Author SHA1 Message Date
Sara 8a3717eac3 feat: added recoil to revolver 2025-07-31 23:03:31 +02:00
Sara db7fcb8a65 feat: revolver adjustments 2025-07-31 23:03:14 +02:00
Sara 8cdcf8efb7 tweak: revolver spread tighter 2025-07-31 23:03:06 +02:00
Sara 9fe79e9aa3 fix: added stepup to maintenance building platform 2025-07-31 23:02:52 +02:00
6 changed files with 31 additions and 12 deletions

View file

@ -1,5 +1,6 @@
#include "revolver.h"
#include "scene/animation/animation_player.h"
#include "wave_survival/player_camera.h"
#include "wave_survival/player_input.h"
void Revolver::_bind_methods() {
@ -14,7 +15,7 @@ void Revolver::play_equip_anim() {
void Revolver::shoot() {
if (!is_animating()) {
this->muzzle->shoot();
if (this->alt_requested) {
if (this->alt_active) {
get_anim()->queue("fire_single");
get_anim()->queue("idle_single");
} else {
@ -42,6 +43,12 @@ void Revolver::ready() {
}
void Revolver::process(double delta) {
String const current{ get_anim()->get_current_animation() };
double animation_time{ get_anim()->get_current_animation_position() };
if (current == "fire_single" || current == "fire_double") {
double t{ animation_time / this->recoil_time };
get_camera()->recoil(Math::lerp((double)this->recoil_force, 0.0, CLAMP(t, 0.0, 1.0)) * delta);
}
}
void Revolver::_notification(int what) {

View file

@ -22,6 +22,9 @@ private:
bool alt_requested{ false };
bool alt_active{ false };
HitscanMuzzle *muzzle{ nullptr };
float recoil_force{ 2.f };
float recoil_time{ 0.06f };
};
#endif // !WEAPONS_REVOLVER_H

File diff suppressed because one or more lines are too long

View file

@ -20,10 +20,10 @@ bone_idx = 39
[node name="HitscanMuzzle" type="HitscanMuzzle" parent="revolver/Character/Skeleton3D/BoneAttachment3D"]
unique_name_in_owner = true
transform = Transform3D(1, 6.3507215e-17, 4.732015e-17, -6.350722e-17, 0.28601167, 0.958226, 4.7320157e-17, -0.958226, 0.28601167, 1.0408685e-17, 0.13487417, -0.03951955)
transform = Transform3D(1, 6.3507215e-17, 4.732015e-17, -6.350722e-17, 0.28601167, 0.958226, 4.7320157e-17, -0.958226, 0.28601167, -9.044954e-18, 0.04726258, 0.25400588)
target_position = Vector3(0, 200, 0)
collision_mask = 6
collide_with_areas = true
spread = 0.03
spread = 0.02
[editable path="revolver"]