/
nantonenko95
/
raylib-introduction
Обзор
Документация
Войти
/
nantonenko95
/
raylib-introduction
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/player.cpp
82 строки
2 KB
Nikita
Done
10 ноя 2024, 17:12
10 ноя 2024, 17:12
415bde2
Код
Авторство
О чём код?
#include "player.h" #include "raylib.h" void Player::init() { scale = 4.0; sprite_.frameShowDuration = 3; sprite_.scale = scale; sprite_.init(); weapon.position = position; weapon.projSpawnOffset = {0, -sprite_.finalSize().y / 2.0f * 0.9f}; } void Player::update() { speed_ = {0, 0}; if (IsKeyDown(KEY_W)) speed_ += {0, -1}; if (IsKeyDown(KEY_S)) speed_ += {0, 1}; if (IsKeyDown(KEY_A)) speed_ += {-1, 0}; if (IsKeyDown(KEY_D)) speed_ += {1, 0}; // if (IsKeyDown(KEY_SPACE)) weapon.shoot({0, -1}); speed_ = speed_.normalize(); speed_ *= speedCoef_ * GetFrameTime(); position = constraintMove(position + speed_); weapon.position = position; weapon.update(); sprite_.rotationRad = rotationRad; sprite_.scale = scale; sprite_.origin = position; collider_.position = position; collider_.rectSize = sprite_.finalSize(); } void Player::draw() { sprite_.draw(); weapon.drawProjectiles(); collider_.draw(); } Vec2 Player::constraintMove(Vec2 newPos) const { Vec2 size = sprite_.finalSize(); const float xLower = moveConstraint.x; const float xUpper = moveConstraint.x + moveConstraint.width; const float yLower = moveConstraint.y; const float yUpper = moveConstraint.y + moveConstraint.height; const float xMin = newPos.x - size.x / 2; const float xMax = newPos.x + size.x / 2; const float yMin = newPos.y - size.y / 2; const float yMax = newPos.y + size.y / 2; if (xMin < xLower) newPos.x += (xLower - xMin); if (xMax > xUpper) newPos.x += (xUpper - xMax); if (yMin < yLower) newPos.y += (yLower - yMin); if (yMax > yUpper) newPos.y += (yUpper - yMax); return newPos; }