如何创建带有我创建的类的Hitbox?我已经创建了一个矩形,但是我不知道如何将矩形和对象组合在一起。我尝试将paddleHitbox添加到构造函数中,但没有成功,也许我做错了什么?如果我在主代码中全部进行了编码,那么我已经成功完成了,但是我想要一个“挑战”,并且我想用类和对象来实现它!
namespace Pong
{
class Paddle
{
private Texture2D paddle;
private Vector2 paddlePos;
//the paddle movementspeed
private float fart = 5;
private Rectangle paddleHitbox;
//Keys to move paddle
private KeyboardState kstate = Keyboard.GetState();
private Keys Up, Down;
public Paddle(Texture2D paddel, Vector2 paddlePos, Keys Up, Keys Down)
{
paddle = paddel;
this.paddlePos = paddlePos;
this.Up = Up;
this.Down = Down;
}
public Rectangle PaddleHitbox
{
get { return paddleHitbox; }
set { paddleHitbox = value; }
}
public Vector2 PaddlePos
{
get { return paddlePos; }
set { paddlePos = value; }
}
public void Update()
{
if (kstate.IsKeyDown(Up))
{
paddlePos.Y += fart;
}
if (kstate.IsKeyDown(Down))
{
paddlePos.Y -= fart;
}
paddleHitbox.Location = paddlePos.ToPoint();
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(paddle, paddlePos, Color.White);
}
}
}
My main:
//paddle objects which i have created in main with: Paddle leftPaddle / Paddle rightPaddle
lefPaddle = new Paddle(Content.Load<Texture2D>("Paddle"),new Vector2(0, 340), Keys.W, Keys.S);
rightPaddle = new Paddle(Content.Load<Texture2D>("Paddle"), new Vector2(779, 340), Keys.Up, Keys.Down);
ball1 = new Ball(Content.Load<Texture2D>("Ball"));
如果我没记错的话,spriteBatch.Draw()
也有一个要装入矩形的重载。
因此您可以将paddlePos
(仅是位置)替换为paddleHitbox
(这是位置和点击框)。
例如:
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(paddle, paddleHitbox, Color.White);
}