C#XNA空间入侵者数组

Yel*_*n94 0 c# arrays xna

所以这是我的第一个XNA项目,即我是一个完整的菜鸟.我正在制作一个基本的太空入侵者游戏,但我不能为如何为入侵者制作一个矩形阵列做出头脑或尾巴; 我目前所拥有的代码只是在一条长线中绘制它我看了其他答案,但到目前为止似乎都没有.

我有这个初始化:

    InvaderArray = new Invader[5, 11];
    int XPos = 200;
    for (int rows = 0; rows < 5; rows++)
        for (int cols = 0; cols < 11; cols++)
        {
             InvaderArray[rows, cols] = new Invader();
             InvaderArray[rows, cols].SetXPos(XPos);
             InvaderArray[rows, cols].SetYPos(100);

             XPos = XPos + 50;
        }
Run Code Online (Sandbox Code Playgroud)

这在Draw()方法中:

 for (int rows = 0; rows < 5; rows++)
     for (int cols = 0; cols < 11; cols++)
     {
         spriteBatch.Draw(Invader, InvaderArray[rows, cols].GetPos(), Color.White);
     }
Run Code Online (Sandbox Code Playgroud)

我正在使用'Invader'类,如果这有帮助:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;

namespace SpaceInvaders
{
    class Invader
   {
        Vector2 InvaderPos;

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

            InvaderPos.X = 0;
            InvaderPos.Y = 0;
        }

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

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

        public void SetXPos(int pos)
        {
            InvaderPos.X = pos;
        }

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

        public void SetYPos(int pos)
        {
            InvaderPos.Y = pos;
        }

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

        public Vector2 GetPos()
        {
            return InvaderPos;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助都非常感谢.

Eri*_* J. 5

由于此代码,它们排在长队

InvaderArray[rows, cols].SetYPos(100);
Run Code Online (Sandbox Code Playgroud)

给他们每一个人提供相同的Y位置.也许把它设置成类似的东西

InvaderArray[rows, cols].SetYPos(100 + row * 50);
Run Code Online (Sandbox Code Playgroud)

此外,您需要在绘制每一行后将XPos重置为其初始值200.

for (int rows = 0; rows < 5; rows++)
{ 
    XPos = 200;
    for (int cols = 0; cols < 11; cols++)
Run Code Online (Sandbox Code Playgroud)