无法返回返回值,因为它不是变量

问题描述 投票:0回答:2

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;

解决方案可能很明显,但我不知道。

提前谢谢您

c# visual-studio monogame
2个回答
0
投票
sprite.Position.X -= _speed; // X is a property, can't use -= or += with properties

尝试以下方法:

sprite.Position.X = sprite.Position.X - _speed;
© www.soinside.com 2019 - 2024. All rights reserved.