기본적으로 퐁 (Pong) 느낌이 들기 위해서는 자신의 물리학을 구현해야합니다.
클래식 게임은 일반적으로 물리학을 단순한 2D 속도 및 위치 (그리고 어쩌면 가속도)로 구현 한 다음 다른 모든 것을 위조합니다.
(그것은 주목할 가치가 심지어 현대의 게임 가짜만큼 그들은 멀리로 얻을 수있다. 그것은 당신이 그것에게 쉬운 방법을 여전히 같은 게임 플레이 느낌을 얻을 수 있다면 어떤 어려운 방법을 구현하는 가치가 없어.)
퐁 (Pong)의 "위조 된"물리학은 매우 간단해야합니다. 이제
Vector2 position;
Vector2 velocity;
protected override void Update(GameTime gameTime)
{
position += velocity * (float)gameTime.ElapsedGameTime.TotalSeconds;
if((IsInsideLeftBat(position) && velocity.X <= 0)
|| IsInsideRightBat(position) && velocity.X >= 0)
{
velocity.X = -velocity.X; // Bounce the other way
// To change things up, maybe you can change velocity.Y too.
}
// And of course handle the ball going out of the play field, scoring, etc...
}
, 당신은 정말 당신의 게임에 실제 물리에 필요한 한 말 : 여기 당신을 위해 간단한 물리학의 아주 기본적인, 반드시 완전한 비트입니다. 실제 물리학이있는 탁구 게임은 재미있을 수 있습니다 (
in fact somebody has already done it, even real-er).
내가 "속이는"것에 대해 말한 것은 여전히 적용됩니다. 게임에서의 물리학은 실제 현실주의보다 옳은 것을 얻기 위해 상황을 조정하는 것에 관한 것입니다. 아마 당신은 바운스 계수를 1.1로 올려야 할 것입니다. 그리고 아마 공에 약간의 선형 드래그를 추가하여 제어 불능 상태가되지 않도록해야할까요?
(당신이 반대편으로 공을 얻는 데 문제가있는 경우 또는 선형 저항을 줄여보십시오.)
가 실제로 게임에 "주인공"에 대한 가능성이 무엇 - 당신이 그것을 유지하려는 물리 시뮬레이션에서 사물과 상호 작용할 수 있습니다 (아마도 당신의 플레이 필드는 장애물로 가득 찼습니다 - 재미있을 수 있습니다). 그러나 이 완료되면의 동작을 제어 할 수 있습니다.
물리 엔진 업데이트가 실행 된 후이를 간단히 수행하려면 원하지 않는 값으로 이동하고 변경하십시오! 퐁 (Pong)의 경우 이것은 공의 속도를 재설정하여 각 프레임이 일정한 속도로 움직이는 것처럼 간단 할 수 있습니다. 나는 당신이 이미 패들에 대해 이런 식으로 뭔가를하고 있다고 상상해 봅니다. 각 프레임의 위치를 설정하는 것입니다.
은 (내가
platformer on a physics engine을 만들 때이 방법을 사용했습니다.)
또 다른 방법은 가짜 일에 당신이 좋아하는 얼마나 공의 속도를 설정 패에 충돌 처리기를 추가 할 수 있습니다.
이, 손해 배상은 (기본적으로) 두 계수의 최대이다. – mpen