如何将一个精灵的位置设置为另一个精灵的位置

本文关键字:精灵 位置 设置 另一个 一个 | 更新日期: 2023-09-27 18:31:51

是否可以将一个精灵的位置设置为与正在移动的另一个精灵完全相同的位置。

所以我想将"sprite.position"设置为与我的类角色相同的位置:

字符.cs:

    class Character
    {
        Texture2D texture;
        public Vector2 position;
        Vector2 velocity; 
        public Character(Texture2D newTexture, Vector2 newPosition)
        {
            texture = newTexture;
            position = newPosition;
        }
        public void Update(GameTime gameTime)
        {
            position += velocity;
        }   
        public void Draw(SpriteBatch spriteBatch)
        {
            spriteBatch.Draw(texture, position, Color.White);
        }
    }

游戏1.cs:

    public class Game1 : Microsoft.Xna.Framework.Game
    {

        Bullet bullet;
        Character player;

        protected override void Initialize()
        {
            allSprites = new List<ISprite>();
            allSpriteObstakels = new List<ISprite>();
            bullet.position = Character.position; // not working


            base.Initialize();
        }
      }

如何将一个精灵的位置设置为另一个精灵的位置

正如评论所暗示的那样,当你说"它不起作用"时,你需要清楚"不起作用"实际上意味着什么。 例如,您是否收到编译错误? 是否遇到运行时异常? 游戏是否正在运行,但未按预期执行(逻辑错误)?

也就是说,这是我对可能发生的事情的最佳猜测:

  • 我不知道上面的代码是否完整,但项目符号和播放器没有在任何地方实例化。 您需要在使用实例之前"新建"实例。
  • 您使用的是"bullet.position",其中 bullet 是一个实例,但随后您使用的是"Character.position",其中 Character 是一个类。 您是否打算改用"player.position"?
  • 此代码将仅运行一次,这意味着项目符号将设置为与字符相同的位置。 如果希望项目符号位置始终与字符相同,则需要在每一帧中不断重新分配 bullet.position 值。

但最重要的是学会提出问题,以便这里的社区可以帮助您。