所以这是我的第一个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)
任何帮助都非常感谢.
由于此代码,它们排在长队
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)
| 归档时间: |
|
| 查看次数: |
416 次 |
| 最近记录: |