我想知道您将如何为桨创建一个Hitbox?

问题描述 投票:0回答:1

如何创建带有我创建的类的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"));

c# monogame
1个回答
0
投票

如果我没记错的话,spriteBatch.Draw()也有一个要装入矩形的重载。

因此您可以将paddlePos(仅是位置)替换为paddleHitbox(这是位置和点击框)。

例如:

public void Draw(SpriteBatch spriteBatch)
{
    spriteBatch.Draw(paddle, paddleHitbox, Color.White);
}
© www.soinside.com 2019 - 2024. All rights reserved.