(읽기 전에, 이전 질문에 많은 부정적인 반응이있어 매우 불안합니다. "Perfect"code yet)XNA 매끄러운 아래쪽으로 스눕 동작
나는 현재 모기 (Texture2D)를 아래쪽으로 밀어 올린 다음 원래의 위치로 되돌아 오는 방법을 알아 내려고 노력 중이다. 현재 모기는 화면 이동 범위 내에서 좌우로 움직이며 Y 이동은 없습니다.
나는 디버거를 거쳐 Y 좌표를 관찰했다. 내 모기가 실제로 다시 위로 스며 들고 다시 위로 올라옵니다. 그러나 그들은 그렇게 빨리 일어나서 육안으로 볼 수 없습니다.
따라서 실제로 볼 수 있도록 원활하게 스 내핑 할 방법이 필요합니다. 현재 내 게시물에 이미지를 포함 할 수 없지만 원하는 효과를 나타내는 GIF를 만들었습니다. Here's a link to my GIF
상황은 나는 시도했다 :
- 내 이동 코드 (아래 본)의 첫 번째 줄을 복사하고 그것은 단지 Y 좌표에 영향을 줄 수 있도록 변경.
- 결과 : 모기가 여전히 너무 빠르게 급상승했습니다.
- 내 모기의 velocity.Y를 변경하여 0이 아닌 Y를 포함 시키면 운동 코드가 X 위치가 아닌 Y 위치도 변경합니다.
- 결과 : 게임은 ... 내 이동 코드가 업데이트() 함수에서 발견되기 때문에 무한 루프에 갇혀, 그것은 위치를 업데이트 할 수 있도록 코드는 루프에서 나왔을되지 않았다
내 업데이트에있는 동작 코드는 다음과 같습니다. 모기가 오른쪽으로 이동 한 후 왼쪽으로 이동합니다.
internal void Update(GameTime GameTime)
{
position += velocity * (float)GameTime.ElapsedGameTime.TotalSeconds;
// Reverses the direction of the mosquito if it hits the bounds
if (position.X <= gameBoundingBox.Left ||
position.X + animationSequence.CelWidth > gameBoundingBox.Right)
{
velocity.X *= -1;
}
}
그리고 여기 내가 너무 자주 여기에 질문을하지 않는 내가 가지고있는 실제 급습() 코드 ...
internal void Swoop(GameTime gameTime)
{
float originalYPosition = position.Y;
bool currentlySwooping = true;
while (currentlySwooping)
{
position.Y++;
if (this.BoundingBox.Bottom >= gameBoundingBox.Bottom)
{
currentlySwooping = false;
}
}
while (!currentlySwooping && position.Y > originalYPosition)
{
position.Y--;
}
}
을, 그래서 나는 내가 사용하고 있다면 미안 해요 잘못된 형식 또는 너무 적은 정보를주었습니다. 다른 것을 알고 싶으면 알려주십시오.
어디에서 '급습'이라고 부릅니까? – Pipe
내 주요 게임 코드 (MosquitoAttackGame.cs). 특정 번호가 생성되면 swoop 메서드를 호출하는 난수 생성기가 있습니다. 저는 아직 학교에 다니고 있기 때문에 아직 해결책을 찾지 못했습니다. 그러나 내가 집에 갈 때 나는 그것을 시험해 볼 것이다 :) –