mirror of
https://github.com/TheRavenwoodArts/LunaLightXMG.git
synced 2026-07-30 22:55:03 -07:00
Implemented scren shake in the Camera2D class
This commit is contained in:
+18
-18
@@ -27,11 +27,11 @@ namespace LunaLightXMG
|
||||
// Test Render Target Handler
|
||||
private RenderHandler renderHandler;
|
||||
bool resizing;
|
||||
|
||||
|
||||
// Test sprites - eventually handle in a sprite manager?
|
||||
private Texture2D platformTexture;
|
||||
private Texture2D sinkArea;
|
||||
|
||||
|
||||
// Test platforms
|
||||
private Platform[] platforms;
|
||||
private int numOfPlatforms;
|
||||
@@ -44,8 +44,8 @@ namespace LunaLightXMG
|
||||
private SpriteFont debugFont;
|
||||
private Texture2D debugGrid;
|
||||
|
||||
// Utility
|
||||
private static Random random;
|
||||
// Util
|
||||
Utilities util;
|
||||
|
||||
public LunaLightGame()
|
||||
{
|
||||
@@ -63,11 +63,11 @@ namespace LunaLightXMG
|
||||
playerInput = new PlayerInput();
|
||||
enemies = new List<Enemy>();
|
||||
|
||||
random = new Random(42);
|
||||
|
||||
// Init number of platforms / enemies
|
||||
numOfPlatforms = 4;
|
||||
numOfEnemies = 10;
|
||||
|
||||
util = new Utilities();
|
||||
}
|
||||
|
||||
protected override void Initialize()
|
||||
@@ -80,7 +80,7 @@ namespace LunaLightXMG
|
||||
playerInput.HasControl = true; // May need to find a new home for this
|
||||
|
||||
base.Initialize();
|
||||
|
||||
|
||||
// Initialize camera
|
||||
camera2D = new Camera2D(retroWidth, retroHeight);
|
||||
// camera test - set level bounds
|
||||
@@ -103,7 +103,7 @@ namespace LunaLightXMG
|
||||
var KeyB = keyboardState.IsKeyDown(Keys.B);
|
||||
var KeyN = keyboardState.IsKeyDown(Keys.N);
|
||||
var KeyM = keyboardState.IsKeyDown(Keys.M);
|
||||
|
||||
var KeyP = keyboardState.IsKeyDown(Keys.P);
|
||||
if (KeyK)
|
||||
{
|
||||
camera2D.Rotation -= 0.01f;
|
||||
@@ -124,6 +124,10 @@ namespace LunaLightXMG
|
||||
{
|
||||
renderHandler.ZoomOut();
|
||||
}
|
||||
if (KeyP)
|
||||
{
|
||||
camera2D.ScreenShake(0.5f, 5f);
|
||||
}
|
||||
}
|
||||
// ---------------------------------------
|
||||
protected override void LoadContent()
|
||||
@@ -161,7 +165,7 @@ namespace LunaLightXMG
|
||||
// Test player input and movement with abstracted player class
|
||||
playerInput.Update();
|
||||
player.Update(gameTime, playerInput, platforms);
|
||||
|
||||
|
||||
foreach (var enemy in enemies) {
|
||||
enemy.Update(gameTime, player, platforms);
|
||||
}
|
||||
@@ -169,12 +173,13 @@ namespace LunaLightXMG
|
||||
renderHandler.UpdateZoom();
|
||||
// Update camera position
|
||||
camera2D.Follow(player.position);
|
||||
camera2D.UpdateScreenShake(gameTime);
|
||||
// camera testing
|
||||
TestCameraWhilePlaying();
|
||||
|
||||
base.Update(gameTime);
|
||||
}
|
||||
|
||||
|
||||
protected override void Draw(GameTime gameTime)
|
||||
{
|
||||
GraphicsDevice.Clear(Color.CornflowerBlue);
|
||||
@@ -211,7 +216,7 @@ namespace LunaLightXMG
|
||||
for (int i = 0; i < numberOfEnemies; i++)
|
||||
{
|
||||
Vector2 spawnPosition = new Vector2(16 + i * 3, -16);
|
||||
Enemy enemy = new Enemy(spawnPosition, GetRandomValueBetween1And3());
|
||||
Enemy enemy = new(spawnPosition, util.ChooseFromRange(1,3));
|
||||
enemy.LoadContent(Content);
|
||||
enemies.Add(enemy);
|
||||
}
|
||||
@@ -258,16 +263,11 @@ namespace LunaLightXMG
|
||||
|
||||
|
||||
spriteBatch.DrawString(debugFont, $"Camera Rotation Control - Rotate left: K, Rotate right: L", new Vector2(10, 190), Color.White);
|
||||
|
||||
spriteBatch.DrawString(debugFont, $"Render Target Zoom Control - Zoom in: B, Zoom normal: N, Zoom out: M", new Vector2(10, 210), Color.White);
|
||||
|
||||
spriteBatch.DrawString(debugFont, $"Press P to test screen shake.", new Vector2(10, 230), Color.White);
|
||||
spriteBatch.End();
|
||||
}
|
||||
|
||||
public static float GetRandomValueBetween1And3()
|
||||
{
|
||||
return (float)(1 + 2 * random.NextDouble());
|
||||
}
|
||||
|
||||
private void ResetGame()
|
||||
{
|
||||
// reset cam
|
||||
|
||||
Reference in New Issue
Block a user