Методы вызываются, но код внутри них не выполняется - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д