mirror of
https://github.com/zhenyan121/Cubed.git
synced 2026-08-08 17:57:02 +08:00
feat(gameplay): add pig wander AI and refine speed physics
This commit is contained in:
@@ -20,9 +20,9 @@ void ServerEntityManager::init() {
|
||||
m_factories.try_emplace("cubed:pig", [this]() {
|
||||
BaseServerCreature c;
|
||||
c.hitbox = HitboxManager::instance().get_hitbox_id("cubed:pig");
|
||||
return create_entity_in_factory(Entity{m_next},
|
||||
EntityInfo{"cubed:pig", ""},
|
||||
std::move(c), PigTag{});
|
||||
return create_entity_in_factory(
|
||||
Entity{m_next}, EntityInfo{"cubed:pig", ""}, std::move(c), PigTag{},
|
||||
AIBase{}, WanderAITag{}, MoveBoost{});
|
||||
});
|
||||
}
|
||||
void ServerEntityManager::update() {
|
||||
|
||||
@@ -14,11 +14,24 @@ void SpeedSystem::update(float dt, entt::registry& registry) {
|
||||
++moveboost.count;
|
||||
creature.velocity.value +=
|
||||
creature.direction.value * creature.movement.acceleration;
|
||||
} else {
|
||||
} else if (glm::dot(creature.velocity.value, creature.velocity.value) >=
|
||||
0.001f) {
|
||||
creature.velocity.value -=
|
||||
creature.direction.value * creature.movement.deceleration;
|
||||
} else {
|
||||
creature.velocity.value = glm::vec3(0.0f);
|
||||
}
|
||||
creature.velocity.value.y = creature.gravity.value * dt;
|
||||
creature.velocity.value.y += -creature.gravity.value * dt;
|
||||
auto v_clamp = [](float& v, float max) {
|
||||
auto temp = std::abs(v);
|
||||
max = std::abs(max);
|
||||
temp = std::clamp(temp, 0.0f, max);
|
||||
|
||||
v = temp;
|
||||
};
|
||||
v_clamp(creature.velocity.value.x, creature.velocity.max.x);
|
||||
v_clamp(creature.velocity.value.y, creature.velocity.max.y);
|
||||
v_clamp(creature.velocity.value.z, creature.velocity.max.z);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user