change enemy to monster

This commit is contained in:
h4570
2022-08-12 12:04:52 +02:00
parent d65561487c
commit 2054dba4ec
6 changed files with 36 additions and 32 deletions
+1 -1
View File
@@ -1,8 +1,8 @@
------------ Tyra's v2.0 roadmap to publish on GitHub ------------
- [Demo] Animation table
- [Demo] Crosshair
- [Demo] 2D Health bar
- [Demo] Change enemy to monster
- [Demo] More monsters!
- [Demo] Add ship and other reality stuff
- [Demo] Game fadein
+3 -2
View File
@@ -12,6 +12,7 @@
#include "states/game/renderer/renderer_dynamic_pair.hpp"
#include "states/game/renderer/renderer_static_pair.hpp"
#include "states/game/terrain/heightmap.hpp"
#include "./weapon.hpp"
#include "./camera.hpp"
#include <engine.hpp>
@@ -32,10 +33,10 @@ class Player {
RendererStaticPair* pair;
void update(const float& terrainHeight);
void update(const Heightmap& heightmap);
private:
void handlePlayerPosition(const float& terrainHeight);
void handlePlayerPosition(const Heightmap& heightmap,const float& terrainHeight);
float speed;
Pad* pad;
+7 -7
View File
@@ -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);
+3 -3
View File
@@ -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();
+8 -5
View File
@@ -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;
}
+14 -14
View File
@@ -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) {