Goodday
对于学校,我们必须使用单人游戏来创建游戏。我们刚刚了解了堆栈和结构的工作方式,但是我无法为上帝的爱找到解决以下问题的方法。
private void ApplySpeed(GameTime gameTime)
{
_speed = (float)(_scrollingSpeed * gameTime.ElapsedGameTime.TotalSeconds);
if (!_constantSpeed || _player.velocity.X != 0)
_speed *= _player.velocity.X;
foreach (var sprite in _sprites)
sprite.Position.X -= _speed; //error here
}
private void CheckPosition()
{
for (int i = 0; i < _sprites.Count; i++)
{
var sprite = _sprites[i];
if (sprite.Rect.Right <= 0)
{
var index = i - 1;
if (index < 0)
index = _sprites.Count - 1;
sprite.Position.X = _sprites[index].Rect.Right - (_speed * 2); //Error here
}
}
以下代码是所有继承自此的Sprite类。我分享了我认为重要的部分:
public class Sprite : Component
{
protected AnimationManager _animationManager;
protected Dictionary<string, Animation> _animation;
protected Vector2 _position;
protected Texture2D _texture;
protected float _layer { get; set; }
public Input Input;
public float Speed = 1f;
public Vector2 Velocity;
public float Layer
{
get { return _layer; }
set
{
_layer = value;
}
}
public Sprite(Dictionary<string, Animation> dictionary, Texture2D texture)
{
_texture = texture;
}
public Vector2 Position
{
get { return _position; }
set
{
_position = value;
if (_animationManager != null)
_animationManager.Position = _position;
}
}
protected Vector2 position;
private Texture2D texture;
解决方案可能很明显,但我不知道。
提前谢谢您
sprite.Position.X -= _speed; // X is a property, can't use -= or += with properties
尝试以下方法:
sprite.Position.X = sprite.Position.X - _speed;