change enemy to monster
This commit is contained in:
@@ -23,12 +23,12 @@ Enemy::Enemy(TextureRepository* repo) {
|
||||
ObjLoader loader;
|
||||
|
||||
ObjLoaderOptions objOptions;
|
||||
objOptions.animation.count = 4;
|
||||
objOptions.animation.count = 6;
|
||||
objOptions.flipUVs = true;
|
||||
objOptions.scale = 60.0F;
|
||||
objOptions.scale = 250.0F;
|
||||
|
||||
auto* data = loader.load(
|
||||
FileUtils::fromCwd("game/models/soldier/soldier.obj"), objOptions);
|
||||
auto* data = loader.load(FileUtils::fromCwd("game/models/zombie/zombie.obj"),
|
||||
objOptions);
|
||||
data->normalsEnabled = false;
|
||||
mesh = new DynamicMesh(*data);
|
||||
|
||||
@@ -37,7 +37,7 @@ Enemy::Enemy(TextureRepository* repo) {
|
||||
mesh->playAnimation(0, mesh->frames.size() - 1);
|
||||
mesh->setAnimSpeed(0.1F);
|
||||
|
||||
repo->addByMesh(mesh, FileUtils::fromCwd("game/models/soldier/"), "png");
|
||||
repo->addByMesh(mesh, FileUtils::fromCwd("game/models/zombie/"), "png");
|
||||
|
||||
mesh->translation.translateY(-5.0F);
|
||||
|
||||
@@ -58,11 +58,11 @@ void Enemy::update(const Heightmap& heightmap, const Vec4& playerPosition) {
|
||||
auto diff = *enemyPosition - playerPosition;
|
||||
auto ang = Math::atan2(diff.x, diff.z);
|
||||
|
||||
if (diff.length() > 120.0F) {
|
||||
if (diff.length() > 30.0F) {
|
||||
diff.normalize();
|
||||
const float speed = 1.5F;
|
||||
auto nextPos = *enemyPosition - diff * speed;
|
||||
nextPos.y = heightmap.getHeightOffset(nextPos) - 150.0F;
|
||||
nextPos.y = heightmap.getHeightOffset(nextPos) - 60.0F;
|
||||
|
||||
mesh->translation.identity();
|
||||
mesh->translation.translate(nextPos);
|
||||
|
||||
@@ -69,8 +69,8 @@ void GameState::update() {
|
||||
engine->renderer.beginFrame(cameraInfo);
|
||||
|
||||
dbgObj->setPosition(*cameraInfo.looksAt);
|
||||
float terrainHeight = terrain->getHeightOffset(player->getPosition());
|
||||
player->update(terrainHeight);
|
||||
|
||||
player->update(terrain->heightmap);
|
||||
enemy->update(terrain->heightmap, player->getPosition());
|
||||
|
||||
renderer.clear();
|
||||
@@ -78,7 +78,7 @@ void GameState::update() {
|
||||
renderer.add(skybox->pair);
|
||||
renderer.add(player->pair);
|
||||
renderer.add(enemy->pair);
|
||||
// renderer.add(terrain->pair);
|
||||
renderer.add(terrain->pair);
|
||||
renderer.add(dbgObj->pair);
|
||||
}
|
||||
renderer.render();
|
||||
|
||||
@@ -23,13 +23,16 @@ Player::Player(Engine* engine)
|
||||
|
||||
Player::~Player() { delete pair; }
|
||||
|
||||
void Player::update(const float& terrainHeight) {
|
||||
handlePlayerPosition(terrainHeight);
|
||||
void Player::update(const Heightmap& heightmap) {
|
||||
float terrainHeight = heightmap.getHeightOffset(getPosition());
|
||||
|
||||
handlePlayerPosition(heightmap, terrainHeight);
|
||||
camera.update(position, terrainHeight);
|
||||
weapon.update();
|
||||
}
|
||||
|
||||
void Player::handlePlayerPosition(const float& terrainHeight) {
|
||||
void Player::handlePlayerPosition(const Heightmap& heightmap,
|
||||
const float& terrainHeight) {
|
||||
const auto& leftJoy = pad->getLeftJoyPad();
|
||||
|
||||
auto normalizedCamera = Vec4(camera.unitCircle);
|
||||
@@ -37,7 +40,7 @@ void Player::handlePlayerPosition(const float& terrainHeight) {
|
||||
normalizedCamera *= speed;
|
||||
|
||||
Vec4 nextPosition(position);
|
||||
nextPosition.y = terrainHeight - 60.0F;
|
||||
nextPosition.y = terrainHeight + 50.0F;
|
||||
|
||||
if (leftJoy.v <= 100) {
|
||||
nextPosition.x += normalizedCamera.x;
|
||||
@@ -54,7 +57,7 @@ void Player::handlePlayerPosition(const float& terrainHeight) {
|
||||
nextPosition.z += normalizedCamera.x;
|
||||
}
|
||||
|
||||
position = nextPosition;
|
||||
if (!heightmap.isOutside(nextPosition)) position = nextPosition;
|
||||
|
||||
camera.position = position;
|
||||
}
|
||||
|
||||
@@ -18,29 +18,29 @@ using Tyra::ObjLoaderOptions;
|
||||
|
||||
namespace Demo {
|
||||
Terrain::Terrain(TextureRepository* repo)
|
||||
: heightmap(20.0F, // Min height
|
||||
320.0F, // Max height
|
||||
: heightmap(-70.0F, // Min height
|
||||
240.0F, // Max height
|
||||
Vec4(-750.0F, 0.0F, -1400.0F, 1.0F), // Left up
|
||||
Vec4(920.0F, 0.0F, 1520.0F, 1.0F) // Right down
|
||||
) {
|
||||
// ObjLoader loader;
|
||||
ObjLoader loader;
|
||||
|
||||
// ObjLoaderOptions objOptions;
|
||||
// objOptions.flipUVs = true;
|
||||
// objOptions.scale = 100.0F;
|
||||
ObjLoaderOptions objOptions;
|
||||
objOptions.flipUVs = true;
|
||||
objOptions.scale = 100.0F;
|
||||
|
||||
// auto* data = loader.load(
|
||||
// FileUtils::fromCwd("game/models/terrain/terrain.obj"), objOptions);
|
||||
// data->normalsEnabled = false;
|
||||
// mesh = new StaticMesh(*data);
|
||||
auto* data = loader.load(
|
||||
FileUtils::fromCwd("game/models/terrain/terrain.obj"), objOptions);
|
||||
data->normalsEnabled = false;
|
||||
mesh = new StaticMesh(*data);
|
||||
|
||||
// delete data;
|
||||
delete data;
|
||||
|
||||
// repo->addByMesh(mesh, FileUtils::fromCwd("game/models/terrain/"), "png");
|
||||
repo->addByMesh(mesh, FileUtils::fromCwd("game/models/terrain/"), "png");
|
||||
|
||||
// allocateOptions();
|
||||
allocateOptions();
|
||||
|
||||
// pair = new RendererStaticPair{mesh, options};
|
||||
pair = new RendererStaticPair{mesh, options};
|
||||
}
|
||||
|
||||
float Terrain::getHeightOffset(const Vec4& playerPosition) {
|
||||
|
||||
Reference in New Issue
Block a user