diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Player/Player.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Player/Player.cs index b194de9..0122b50 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Player/Player.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Player/Player.cs @@ -16,6 +16,8 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities { Width = 32; Height = 64; + AppManager.Instance.InputManager.MovEventJump += AnimationJump; + } public bool IsAlive { get { return isAlive; } } @@ -41,5 +43,9 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities } isAlive = false; } + public void AnimationJump() + { + velocity.Y = -300; + } } } diff --git a/DangerousD/GameCore/Levels/Level1.cs b/DangerousD/GameCore/Levels/Level1.cs index 1596f63..da68dc0 100644 --- a/DangerousD/GameCore/Levels/Level1.cs +++ b/DangerousD/GameCore/Levels/Level1.cs @@ -28,6 +28,8 @@ namespace DangerousD.GameCore.Levels new GrassBlock(new Vector2(i*32, 256)); } new GrassBlock(new Vector2(500, 224)); + Player player = new Player(new Vector2(400, 64)); + player.AnimationJump(); } } } diff --git a/DangerousD/GameCore/Managers/PhysicsManager.cs b/DangerousD/GameCore/Managers/PhysicsManager.cs index 17f39f7..28ecf14 100644 --- a/DangerousD/GameCore/Managers/PhysicsManager.cs +++ b/DangerousD/GameCore/Managers/PhysicsManager.cs @@ -144,37 +144,45 @@ namespace DangerousD.GameCore.Managers { rectangle.X = (int)(entity2.Pos.X + (i / length) * distance.X); rectangle.Y = (int)(entity2.Pos.Y + (i / length) * distance.Y); + if (i == length - 1) + { + return null; + } for (int j = 0; j < AppManager.Instance.GameManager.entities.Count; j++) { - if (AppManager.Instance.GameManager.entities[i].Rectangle.Intersects(rectangle)) + if (AppManager.Instance.GameManager.entities[j].Rectangle.Intersects(rectangle)) { - return AppManager.Instance.GameManager.entities[i]; + gameObject = AppManager.Instance.GameManager.entities[j]; } } for (int r = 0; r < AppManager.Instance.GameManager.mapObjects.Count; r++) { - if (AppManager.Instance.GameManager.mapObjects[i].Rectangle.Intersects(rectangle)) + if (AppManager.Instance.GameManager.mapObjects[r].Rectangle.Intersects(rectangle)) { - return AppManager.Instance.GameManager.mapObjects[i]; + gameObject = AppManager.Instance.GameManager.mapObjects[r]; } } for (int w = 0; w < AppManager.Instance.GameManager.livingEntities.Count; w++) { - if (AppManager.Instance.GameManager.livingEntities[i].Rectangle.Intersects(rectangle)) + if (AppManager.Instance.GameManager.livingEntities[w].Rectangle.Intersects(rectangle)) { - return AppManager.Instance.GameManager.livingEntities[i]; + gameObject = AppManager.Instance.GameManager.livingEntities[w]; } } } - - - return null; + + if (gameObject == entity1) + { + return null; + } + return gameObject; } public GameObject RayCast(LivingEntity entity1, Vector2 targetCast) { Rectangle rectangle; Vector2 direction = entity1.Pos - targetCast; rectangle = new Rectangle((int)targetCast.X, (int)targetCast.Y, 1, 1); + GameObject gameObject = null; double k = direction.Length(); for (int i = 0; i < k; i++) @@ -183,28 +191,31 @@ namespace DangerousD.GameCore.Managers rectangle.Y = (int)(targetCast.Y + (i / k) * direction.X); for (int j = 0; j < AppManager.Instance.GameManager.entities.Count; j++) { - if (AppManager.Instance.GameManager.entities[i].Rectangle.Intersects(rectangle)) + if (AppManager.Instance.GameManager.entities[j].Rectangle.Intersects(rectangle)) { - return AppManager.Instance.GameManager.entities[i]; + gameObject = AppManager.Instance.GameManager.entities[j]; } } for (int r = 0; r < AppManager.Instance.GameManager.mapObjects.Count; r++) { - if (AppManager.Instance.GameManager.mapObjects[i].Rectangle.Intersects(rectangle)) + if (AppManager.Instance.GameManager.mapObjects[r].Rectangle.Intersects(rectangle)) { - return AppManager.Instance.GameManager.mapObjects[i]; + gameObject = AppManager.Instance.GameManager.mapObjects[r]; } } for (int w = 0; w < AppManager.Instance.GameManager.livingEntities.Count; w++) { - if (AppManager.Instance.GameManager.livingEntities[i].Rectangle.Intersects(rectangle)) + if (AppManager.Instance.GameManager.livingEntities[w].Rectangle.Intersects(rectangle)) { - return AppManager.Instance.GameManager.livingEntities[i]; + gameObject = AppManager.Instance.GameManager.livingEntities[w]; } } - } - - return null; + } + if (gameObject == entity1) + { + return null; + } + return gameObject; } public List CheckRectangle(Rectangle rectangle, Type type)