| @ -0,0 +1,91 @@ | |||||
| /******************************************************************************************* | |||||
| * | |||||
| * raylib [core] example - 3d camera first person | |||||
| * | |||||
| * This example has been created using raylib 1.3 (www.raylib.com) | |||||
| * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) | |||||
| * | |||||
| * Copyright (c) 2015 Ramon Santamaria (@raysan5) | |||||
| * | |||||
| ********************************************************************************************/ | |||||
| #include "raylib.h" | |||||
| #define MAX_COLUMNS 20 | |||||
| int main() | |||||
| { | |||||
| // Initialization | |||||
| //-------------------------------------------------------------------------------------- | |||||
| int screenWidth = 800; | |||||
| int screenHeight = 450; | |||||
| InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera first person"); | |||||
| // Define the camera to look into our 3d world | |||||
| Camera camera = {{ 0.0, 10.0, 10.0 }, { 0.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }}; | |||||
| // Generates some random columns | |||||
| float heights[MAX_COLUMNS]; | |||||
| Vector3 positions[MAX_COLUMNS] = { 0.0, 2.5, 0.0 }; | |||||
| Color colors[MAX_COLUMNS]; | |||||
| for (int i = 0; i < MAX_COLUMNS; i++) | |||||
| { | |||||
| heights[i] = (float)GetRandomValue(1, 12); | |||||
| positions[i] = (Vector3){ GetRandomValue(-15, 15), heights[i]/2, GetRandomValue(-15, 15) }; | |||||
| colors[i] = (Color){ GetRandomValue(20, 255), GetRandomValue(10, 55), 30, 255 }; | |||||
| } | |||||
| Vector3 playerPosition = { 4, 2, 4 }; // Define player position | |||||
| SetCameraMode(CAMERA_FIRST_PERSON); // Set a first person camera mode | |||||
| SetTargetFPS(60); // Set our game to run at 60 frames-per-second | |||||
| //-------------------------------------------------------------------------------------- | |||||
| // Main game loop | |||||
| while (!WindowShouldClose()) // Detect window close button or ESC key | |||||
| { | |||||
| // Update | |||||
| //---------------------------------------------------------------------------------- | |||||
| UpdateCameraPlayer(&camera, &playerPosition); // Update camera and player position | |||||
| //---------------------------------------------------------------------------------- | |||||
| // Draw | |||||
| //---------------------------------------------------------------------------------- | |||||
| BeginDrawing(); | |||||
| ClearBackground(RAYWHITE); | |||||
| Begin3dMode(camera); | |||||
| DrawPlane((Vector3){ 0, 0, 0 }, (Vector2){ 32, 32 }, LIGHTGRAY); // Draw ground | |||||
| DrawCube((Vector3){ -16, 2.5, 0 }, 1, 5, 32, BLUE); // Draw a blue wall | |||||
| DrawCube((Vector3){ 16, 2.5, 0 }, 1, 5, 32, LIME); // Draw a green wall | |||||
| DrawCube((Vector3){ 0, 2.5, 16 }, 32, 5, 1, GOLD); // Draw a yellow wall | |||||
| // Draw some cubes around | |||||
| for (int i = 0; i < MAX_COLUMNS; i++) | |||||
| { | |||||
| DrawCube(positions[i], 2, heights[i], 2, colors[i]); | |||||
| DrawCubeWires(positions[i], 2, heights[i], 2, MAROON); | |||||
| } | |||||
| End3dMode(); | |||||
| DrawText("First person camera default controls:", 20, 20, 10, GRAY); | |||||
| DrawText("- Move with keys: W, A, S, D", 40, 50, 10, DARKGRAY); | |||||
| DrawText("- Mouse move to lokk around", 40, 70, 10, DARKGRAY); | |||||
| EndDrawing(); | |||||
| //---------------------------------------------------------------------------------- | |||||
| } | |||||
| // De-Initialization | |||||
| //-------------------------------------------------------------------------------------- | |||||
| CloseWindow(); // Close window and OpenGL context | |||||
| //-------------------------------------------------------------------------------------- | |||||
| return 0; | |||||
| } | |||||