This commit is contained in:
aozhiwei 2023-03-08 13:14:41 +08:00
parent f913e68029
commit 602e10f7dc

View File

@ -65,6 +65,7 @@ void CallFuncBuff::Activate()
break;
case BuffCallFunc_e::kFlashMove:
{
hold_param2_ = meta->GetBuffParam2(this);
ProcFlashMove();
}
break;
@ -193,18 +194,25 @@ void CallFuncBuff::ProcFlashMove()
{
float distance = owner->context_pos.Distance2D2(owner->GetPos());
if (distance > 0.00001f) {
glm::vec3 move_dir = owner->context_pos.CalcDir(owner->GetPos());
glm::vec3 move_dir = owner->GetPos().CalcDir(owner->context_pos);
GlmHelper::Normalize(move_dir);
float move_distance = std::min(distance, hold_param2_);
glm::vec3 hit_point = glm::vec3(0.0f, 0.0f, 0.0f);
bool hit_result = false;
glm::vec3 start = owner->GetPos().ToGlmVec3();
glm::vec3 end = owner->GetPos().ToGlmVec3() + move_dir * move_distance;
owner->room->map_instance->Scale(start);
owner->room->map_instance->Scale(end);
bool ret = owner->room->map_instance->Raycast
(
owner->GetPos().ToGlmVec3(),
move_dir * move_distance,
start,
end,
hit_point,
hit_result);
if (ret) {
owner->room->map_instance->UnScale(hit_point);
owner->GetMovement()->ClearPath();
owner->context_real_pos = hit_point;