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

时间:2014-11-25 18:02:18

标签: c# xna

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

所以我想将“sprite.position”设置为我的类Character所在的位置:

Character.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);
        }

    }

Game1.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();
        }

      }

1 个答案:

答案 0 :(得分:0)

正如评论所暗示的那样,当你说“它不起作用”时,你需要清楚“不工作”究竟意味着什么。例如,您是否收到编译错误?您是否收到运行时异常?游戏是否正在运行,但它没有达到您的预期(逻辑错误)?

那就是说,这是我最好的猜测:

  • 我不知道上面的代码是否完整但子弹和播放器没有在任何地方实例化。在使用实例之前,您需要“新”实例。
  • 您使用的是“bullet.position”,其中bullet是一个实例,但是您使用的是“Character.position”,其中Character是一个类。你打算用“player.position”吗?
  • 此代码只运行一次,这意味着子弹将设置为与角色相同的位置。如果你打算让子弹位置始终与角色相同,那么你需要每帧不断重新分配bullet.position值。

但最重要的是学会提问,以便社区可以帮助你。