在类中重绘而不是主程序

时间:2015-03-29 10:35:19

标签: c# xna

我正在尝试创建一个游戏,其中一些太空飞船从顶部开始,当一个人到达屏幕边缘时单独向下工作。

问题是我不确定如何在每个实例中执行此操作。

移动它们的部分是:

Ticks = Ticks + gameTime.ElapsedGameTime.TotalMilliseconds;

        if (Ticks > 50)
        {
            for (int Count = 0; Count < 11; Count++)
            {


                if (Invaders[Count].GetXPos() < 96)
                {
                    Invaders[Count].setXPos(96);
                    Invaders[Count].setYPos(150);
                }
                else if (Invaders[Count].GetXPos() > 924)
                {
                    Invaders[Count].setXPos(924);
                    Invaders[Count].setYPos(150);
                }

                if (Invaders[Count].GetYPos()%150 == 0)
                {
                    Invaders[Count].MoveHorizontal(2);
                    alienDirection *= -1;
                }
                else
                {
                    Invaders[Count].MoveHorizontal(alienSpeed * alienDirection);
                }
               // Invaders[Count].MoveHorizontal(alienSpeed * alienDirection);
            }

            Ticks = 0;
        }

类入侵者:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace SpaceInvader
{
    class Invader
    {
        Vector2 alienPos;

        public Invader()
        {
            alienPos = new Vector2();

            alienPos.X = 0;
            alienPos.Y = 0;
        }

        public void MoveHorizontal(int amount)
        {
            alienPos.X = alienPos.X + amount;
        }

        public void MoveVertical(int amount)
        {
            alienPos.Y = alienPos.Y + amount;
        }

        public void setXPos(int pos)
        {
            alienPos.X = pos;

        }

        public int GetXPos()
        {
            return (int)alienPos.X;
        }

        public void setYPos(int pos)
        {
            alienPos.Y = pos;
        }

        public int GetYPos()
        {
            return (int)alienPos.Y;
        }

        public Vector2 GetPos()
        {
            return alienPos;
        }
    }
}

有没有办法让Invader完全自包含,并在创建和给定位置移动和重绘(所以我可以忘记移动它并在主程序中重绘它,所有我不得不担心的是碰撞后来检测等?)

0 个答案:

没有答案