Методы вызываются, но код внутри них не выполняется - C#
Формулировка задачи:
Пишу платформер. Метод falling отвечает за падение игрока под действием гравитации, метод checkCollision останавливает игрока, если тот столкнулся с препятствием. При попытке вызвать эти методы ничего не происходит: координаты не меняются, столкновения не проверяются (пробовал переносить код методов в код таймера - работает исправно, а в методах никак).
Подскажите, где моя ошибка?
namespace _3d_engine { public partial class Form1 : Form { public const float gravity = 0.1f; public const float obstacleThickness = 15; List<obstacle> obstacles = new List<obstacle>(); player player1 = new player(75, 35, 20); private struct player { public RectangleF model; public float Vy; public player(float x, float y, float size) { Vy = 0; model = new RectangleF(x, y, size, size); } } private struct obstacle { public RectangleF model; public bool touched; public obstacle(float x, float y, float width) { touched = false; model = new RectangleF (x, y, width, obstacleThickness); } } private void checkCollision(player p, obstacle o) { if (p.model.IntersectsWith(o.model)) { p.Vy = 0; o.touched = true; } } private void falling(player p) { p.Vy += gravity; p.model.Y += player1.Vy; } private void drawWorld(List<obstacle> os, player p) { Graphics g = CreateGraphics(); g.FillEllipse(Brushes.OrangeRed, p.model); foreach (obstacle o in os) { g.FillRectangle(Brushes.Blue, o.model); } } private void addNewObstacle(float x, float y, float width) { obstacles.Add(new obstacle(x, y, width)); } public Form1() { InitializeComponent(); addNewObstacle(50, 100, 100); } private void drawTimer_Tick(object sender, EventArgs e) { falling(player1); foreach (obstacle o in obstacles) { checkCollision(player1, o); } drawWorld(obstacles, player1); } } }
Решение задачи: «Методы вызываются, но код внутри них не выполняется»
textual
Листинг программы
checkCollision(ref player1, ref o);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д