Я пытаюсь получить доступ к функции обновления ключа из функции обновления MainChar. Оба класса наследуются от класса Sprite. В Main Char я получаю сообщение об ошибке:
Требуется ссылка на объект для нестатического c поля, метода или свойства Key.Update (GameTime, List). Я попытался поместить тип перед параметрами, но я получаю ошибки:
«GameTime» - это тип, который недопустим в данном контексте, «Sprite» - это тип, который недопустим в данный контекст.
Я также попытался создать новый экземпляр Key, выполнив: Key key = new Key (текстура, позиция); Я снова попытался поместить типы раньше, но только что получил: Ключ не содержит конструктор, который принимает 4 аргумента, и они недопустимы в данном контексте. Помощь будет оценена.
Этот вопрос был связан с похожим вопросом, который не решил мой вопрос, потому что я не могу выполнить обновление или определение ключа c.
public MainChar(Texture2D texture) : base(texture)
{
Scale = 0.1f;
}
public override void Update(GameTime gameTime, List<Sprite> sprites)
{
Move();
foreach (var sprite in sprites)
{
if (sprite == this)
{
continue;
}
if (Velocity.X > 0 && IsTouchingLeft(sprite) || Velocity.X < 0 && IsTouchingRight(sprite))
{
Velocity.X = 0;
}
if (Velocity.Y > 0 && IsTouchingTop(sprite) || Velocity.Y < 0 && IsTouchingBottom(sprite))
{
Velocity.Y = 0;
}
if (sprite.rectangle.Intersects(rectangle))
{
hasDied = true;
}
if (sprite is Key)
{
Key.Update(gameTime, sprites);
}
}
Position += Velocity;
}
public int keyCount;
public Key(Texture2D texture, Vector2 position) : base(texture)
{
Position = position;
Scale = 0.08f;
}
public override void Update(GameTime gameTime, List<Sprite> sprites)
{
foreach (var sprite in sprites)
{
if (sprite is MainChar)
{
if (IsTouchingLeft(sprite) == true || IsTouchingRight(sprite) == true || IsTouchingTop(sprite) == true || IsTouchingBottom(sprite) == true)
{
Position = new Vector2(1000, 1000);
keyCount++;
}
}
}
}