1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| #include <raylib.h> #include <raymath.h> #include <iostream>
int main() { SetConfigFlags(FLAG_WINDOW_UNDECORATED); InitWindow(1280, 720, "FPS: Realistic Scale Demo");
Camera3D camera = { 0 }; camera.position = Vector3{ 10.0f, 1.75f, 10.0f }; camera.target = Vector3{ 0.0f, 1.75f, 0.0f }; camera.up = Vector3{ 0.0f, 1.0f, 0.0f }; camera.fovy = 70.0f; camera.projection = CAMERA_PERSPECTIVE;
Vector3 enemyPos = { 0.0f, 0.0f, 0.0f }; Vector3 enemyVel = { 0.12f, 0.0f, 0.08f }; #include <stddef.h> std::cout << "========================================" << std::endl; std::cout << "ENEMY POSITION ADDRESS: 0x" << std::hex << (uintptr_t)&enemyPos << std::endl; std::cout << "[OFFSET] enemyPos.x: +0x" << offsetof(enemyPos, x) << std::endl; std::cout << "[OFFSET] enemyPos.y: +0x" << offsetof(enemyPos, y) << std::endl; std::cout << "[OFFSET] enemyPos.z: +0x" << offsetof(enemyPos, z) << std::endl; std::cout << "CAMERA_ADDR: 0x" << std::hex << (uintptr_t)&camera << std::endl;
bool isPaused = false;
SetTargetFPS(60); DisableCursor();
while (!WindowShouldClose()) { if (IsKeyPressed(KEY_SPACE)) isPaused = !isPaused;
UpdateCamera(&camera, CAMERA_FIRST_PERSON);
if (!isPaused) { enemyPos = Vector3Add(enemyPos, enemyVel);
if (enemyPos.x > 30.0f || enemyPos.x < -30.0f) enemyVel.x *= -1; if (enemyPos.z > 30.0f || enemyPos.z < -30.0f) enemyVel.z *= -1;
if (GetRandomValue(0, 100) < 2) { float angle = GetRandomValue(0, 360) * DEG2RAD; enemyVel.x = cos(angle) * 0.15f; enemyVel.z = sin(angle) * 0.15f; } }
BeginDrawing(); ClearBackground(BLACK); BeginMode3D(camera); DrawPlane(Vector3 { 0, 0, 0 }, Vector2 { 100, 100 }, DARKGRAY); DrawCapsule(enemyPos, Vector3Add(enemyPos, Vector3 { 0, 1.8f, 0 }), 0.3f, 8, 4, RED); EndMode3D();
DrawText(isPaused ? "STATUS: PAUSED (SPACE to Resume)" : "STATUS: RUNNING (SPACE to Pause)", 20, 20, 20, isPaused ? YELLOW : GREEN); DrawCircle(GetScreenWidth() / 2, GetScreenHeight() / 2, 2, SKYBLUE); EndDrawing(); } CloseWindow(); return 0; }
|