그래서 저는 monogame을 사용하여 pong 게임을 만들고 내 히트 감지에 문제가 있습니다. 공이 왼쪽 패들에 닿았을 때 방향을 바꾸기를 원하지만 어떤 이유로 공이 공이 패들의 양쪽을 지나가고 튀어 오르지 만 맨 위로 볼 수있게되면 튀어 오릅니다. 아무도 볼 수 없으면 튀어 오릅니다. 내가 도대체 뭘 잘못하고있는 겁니까? 박쥐 클래스Monogame 충돌 감지가 올바르게 작동하지 않습니다.
public class Bat : DrawableGameComponent
{
private SpriteBatch spriteBatch;
private Texture2D tex;
private Vector2 speed;
private Vector2 position;
private Vector2 stage;
public Rectangle Rectangle
{
get
{
return new Rectangle((int)position.X, (int)position.Y, tex.Width, tex.Height);
}
}
public Bat(Game game,
SpriteBatch spriteBatch,
Texture2D tex,
Vector2 position,
Vector2 speed,
Vector2 stage): base(game)
{
this.spriteBatch = spriteBatch;
this.tex = tex;
this.position = position;
this.speed = speed;
this.stage = stage;
}
박쥐와 충돌 탐지를 추가 충돌 클래스 업데이트 방법
public override void Update(GameTime gameTime)
{
if (ball.Rectangle.Intersects(bat.Rectangle))
{
ball.speed.Y = -Math.Abs(ball.speed.Y);
hitSound.Play();
}
base.Update(gameTime);
}
그리고 게임 클래스의 내 코드 Heres는
부
Texture2D batTex = this.Content.Load<Texture2D>("Images/BatLeft");
Vector2 batPos = new Vector2(100,100);
Vector2 batSpeed = new Vector2(4, 0);
bat = new Bat(this, spriteBatch, batTex, batPos, batSpeed, stage);
this.Components.Add(bat);
SoundEffect dingSound = this.Content.Load<SoundEffect>("Music/ding");
CollisionDetection cd = new CollisionDetection(this, ball, bat, dingSound);
this.Components.Add(cd);
, 방망이와 공의 사각형은 (대신 고유 변수의'Rectangle' 클래스를 사용하는) 정의되지 않은, 표준으로 사각형을 사용해보십시오 get 메소드가없는 변수. 공공 변수에서 즉시 호출하십시오. – Steven
여기에도 원 - 사각형 충돌이 필요합니다. –