1
This commit is contained in:
parent
3155c9edaf
commit
2eb1c62333
@ -1554,7 +1554,8 @@ void CallFuncBuff::BatchRandomPosSummonObstacle()
|
||||
glm::vec3 center = glm::vec3(x, y, z);
|
||||
for (int i = 0; i < num; ++i) {
|
||||
glm::vec3 out_point = center;
|
||||
owner->room->map_instance->RandPoint(center, range, out_point);
|
||||
bool ret = owner->room->map_instance->RandPoint(center, range, out_point);
|
||||
if (ret) {
|
||||
Obstacle* ob = owner->SummonObstacle(this,
|
||||
id,
|
||||
out_point,
|
||||
@ -1577,4 +1578,5 @@ void CallFuncBuff::BatchRandomPosSummonObstacle()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -972,16 +972,19 @@ void Creature::DoSkill(int skill_id,
|
||||
if (skill->GetMinorType()) {
|
||||
auto old_context_dir = context_dir;
|
||||
auto old_context_pos = context_pos;
|
||||
context_dir = skill_dir_;
|
||||
context_dir = skill_dir;
|
||||
context_pos = GetPos();
|
||||
context_pos.AddGlmVec3(skill_dir_ * skill_distance);
|
||||
context_pos.AddGlmVec3(skill_dir * skill_distance);
|
||||
#ifdef MYDEBUG
|
||||
a8::XPrintf("skill_dir:%f %f %f skill_distance:%f\n",
|
||||
a8::XPrintf("skill_dir:%f %f %f skill_distance:%f skill_target_pos:%f %f %f\n",
|
||||
{
|
||||
skill_dir_.x,
|
||||
skill_dir_.y,
|
||||
skill_dir_.z,
|
||||
skill_distance
|
||||
skill_dir.x,
|
||||
skill_dir.y,
|
||||
skill_dir.z,
|
||||
skill_distance,
|
||||
context_pos.GetX(),
|
||||
context_pos.GetY(),
|
||||
context_pos.GetZ(),
|
||||
});
|
||||
#endif
|
||||
SetAttackDir(skill_dir);
|
||||
|
@ -369,10 +369,20 @@ bool MapInstance::RandPoint(const glm::vec3& center, float range, glm::vec3& out
|
||||
|
||||
glm::vec3 start = center;
|
||||
glm::vec3 dir = GlmHelper::UP;
|
||||
GlmHelper::RotateY(dir, (10 + rand() % 360)/ 180.0f);
|
||||
GlmHelper::RotateY(dir, glm::radians(1.0f + (float)(rand() % 360)));
|
||||
GlmHelper::Normalize(dir);
|
||||
glm::vec3 end = center + dir * range;
|
||||
glm::vec3 end = center + dir * (float)(rand() % (int)std::max(1.0f, range));
|
||||
|
||||
out_point = center;
|
||||
#ifdef MYDEBUG
|
||||
a8::XPrintf("MapInstance::RandPoint:%f %f %f\n",
|
||||
{
|
||||
out_point.x,
|
||||
out_point.y,
|
||||
out_point.z,
|
||||
});
|
||||
#endif
|
||||
return true;
|
||||
Scale(start);
|
||||
Scale(end);
|
||||
if (Raycast
|
||||
|
Loading…
x
Reference in New Issue
Block a user