This commit is contained in:
aozhiwei 2023-03-09 23:18:24 +08:00
parent 7f9e47a881
commit 9e040e8a7e

View File

@ -2944,6 +2944,7 @@ void Creature::ShortFindPath()
#if 1
bool right_ok = false;
float right_distance = 0.0f;
glm::vec3 right_pos = glm::vec3(0.0f, 0.0f, 0.0f);
{
float angle = 1.0f;
glm::vec3 move_dir = GetMoveDir();
@ -2953,10 +2954,13 @@ void Creature::ShortFindPath()
bool ret = try_move(start_pos, end_pos, new_point);
if (ret) {
right_ok = true;
right_pos = new_point;
right_distance = GlmHelper::Norm(new_point - GetPos().ToGlmVec3());
}
}
bool left_ok = false;
float left_distance = 0.0f;
glm::vec3 left_pos = glm::vec3(0.0f, 0.0f, 0.0f);
{
float angle = -1.0f;
glm::vec3 move_dir = GetMoveDir();
@ -2966,6 +2970,33 @@ void Creature::ShortFindPath()
bool ret = try_move(start_pos, end_pos, new_point);
if (ret) {
left_ok = true;
left_pos = new_point;
left_distance = GlmHelper::Norm(new_point - GetPos().ToGlmVec3());
}
}
if (right_ok || left_ok) {
glm::vec3 finaly_pos = glm::vec3(0.0f, 0.0f, 0.0f);
if (right_ok && left_ok) {
if (right_distance > left_distance) {
finaly_pos = right_pos;
} else {
finaly_pos = left_pos;
}
} else if (right_ok) {
finaly_pos = right_pos;
} else if (left_ok) {
finaly_pos = left_pos;
}
glm::vec3 move_dir = finaly_pos - GetPos().ToGlmVec3();
GlmHelper::Normalize(move_dir);
glm::vec3 end_pos = start_pos + move_dir * GetSpeed() / 2.0f;
glm::vec3 new_point = glm::vec3(0.0f, 0.0f, 0.0f);
bool ret = try_move(start_pos, end_pos, new_point);
if (ret) {
Global::Instance()->verify_set_pos = 1;
GetMutablePos().FromGlmVec3(last_pos);
Global::Instance()->verify_set_pos = 0;
}
}
#else