From 55147805aeae9aace94e4be76ea87a86c0e2822e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sun, 11 Sep 2022 10:07:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=AD=A6=E5=99=A8=E5=AD=90?= =?UTF-8?q?=E5=BC=B9=E5=87=BA=E7=94=9F=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/creature.cc | 42 +++++++++++++++++++++++++++++++++++ server/gameserver/metadata.h | 1 + server/gameserver/room.cc | 3 +++ 3 files changed, 46 insertions(+) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index ada3ecb2..9a2df34b 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -13,6 +13,17 @@ #include "trigger.h" #include "car.h" +#include +#include +#include + +static const auto hero_transform = + glm::rotate( + glm::mat4(1.0), + glm::radians(65.0f), + glm::vec3(0.0, 0.0, 1.0) + ); + struct BulletInfo { CreatureWeakPtr c; @@ -200,6 +211,37 @@ void InternalShot(Creature* c, } } bullet_dir.Rotate(bullet_angle / 180.0f); + #if 1 + { + auto transform = glm::rotate(hero_transform, + bullet_born_angle * A8_PI, + glm::vec3(0.0, 1.0, 0.0)); + glm::vec4 gun_muzzle_position(0.0, 0.0, 0.0, 0.0); + if (weapon_meta->gun_muzzle_position) { + gun_muzzle_position = + glm::vec4( + std::get<0>(*weapon_meta->gun_muzzle_position.get()), + std::get<1>(*weapon_meta->gun_muzzle_position.get()), + std::get<2>(*weapon_meta->gun_muzzle_position.get()), + 0 + ); + } + glm::vec4 v = transform * gun_muzzle_position; + bullet_born_offset = a8::Vec2(v.x *10*1, v.z*10*1); + bullet_born_pos = c->GetPos() + bullet_born_offset; + if (c->IsPlayer()) { + a8::XPrintf("offset:%f,%f angle:%f angle_xy:%f,%f %f %f\n", + {bullet_born_offset.x, + bullet_born_offset.y, + bullet_born_angle, + c->GetAttackDir().x, + c->GetAttackDir().y, + (bullet_born_angle * A8_PI) / 3.14 *180, + (bullet_born_angle * A8_PI - glm::radians(90.0f)) / 3.14 *180 + }); + } + } + #endif { BulletInfo bullet_info; bullet_info.c = c->GetWeakPtrRef(); diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index 0521fad7..a371d993 100644 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -99,6 +99,7 @@ namespace MetaData //0,0,0,0,后座力 std::vector> bullet_born_offset; std::vector> shoot_offsets; + std::shared_ptr> gun_muzzle_position; std::array volume = {}; int int_param1 = 0; float float_param1 = 0; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 8623b276..dcf92e24 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -462,6 +462,9 @@ Human* Room::FindEnemy(Human* hum) void Room::FillSMJoinedNotify(Player* self_hum, cs::SMJoinedNotify& msg) { msg.set_team_mode(msg.team_mode()); + #if 0 + msg.set_adjust_bullet(1); + #endif } void Room::ScatterDrop(a8::Vec2 center, int drop_id)