Методы вызываются, но код внутри них не выполняется - 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);