使用这些变量我如何与一个munchie碰撞pacman? 我已经有了动作,并且它发送的天花板必须给出代码更像解释我将要做的事情。
Pacman variables
private Point frameSize = new Point(32, 32); // Pacman image size
private Point currentFrame = new Point(1, 0); // Start frame
private Point sheetSize = new Point(2, 4); // Spritesheet size
private Vector2 pacmanPos; // Pacman position in pixels
private int pacmanSpeed = 8; // Pacman movement speed in pixels
// Game
SpriteBatch spriteBatch;
Texture2D munchie1, munchie2, pacman;
// Sounds
SoundEffect collisionSound;
// Random number generator
Random rand = new Random();
// Total number of munchies
private int noOfMunchies = 5;
Vector2[] munchiePos;
private int munchieSize;
private int[] munchieAnimationCount;
private int timeSinceLastFrame = 0;
private int milliSecondsPerFrame = 500; // 2 Frames Per Second (fps)
答案 0 :(得分:1)
既然你定义了munchieSize
而不是pacmanSize
我认为你在考虑你的演员是一个点。在这种情况下,假设pacman和munchies的坐标相对于同一系统,如果pacman的位置的向量包含在任何一个零食的边界框中,那么检查每个框架或碰撞测试迭代就足够了。
你可以这样做,考虑我的代码只是一个参考,你应该使用自己的类型来实现结果。
var munchies = new PointF[5];
const int munchySize = 10;
var pacmanPos = new PointF();
var collidesWith = munchies.
Where(m => new RectangleF(m, new SizeF(munchySize, munchySize)).Contains(pacmanPos));
var collisionHappened = collidesWith.Any();
答案 1 :(得分:0)
天真;
foreach mPos in munchiePos
{
if (pacmanPos == mPos )
{
// Collision
}
}
您可能还想添加为每个pacman和munchie绘制的“角色”大小。
答案 2 :(得分:0)
在旁注中,您可能需要考虑将代码构建到类中,这样可以更清晰,更轻松地使用。
如果您不确定如何执行此操作,请考虑以下教程:MSDN Tutorial on Classes
这向您展示了在代码中使用类的核心概念,甚至可能会向您介绍面向对象的编程(如果这是第一次使用OO编程)。