(在您閱讀之前,我很擔心在這裏發帖,因爲我之前的問題有很多負面答覆......請儘量保持好心態,我是一名學生,無法寫信「完美」的代碼呢)XNA Smooth Downward Swoop Motion
我目前正試圖弄清楚如何使蚊子(Texture2D)向下撲翼,然後回到它的原始位置。 目前蚊子只是在屏幕邊界內左右移動,沒有Y的移動。
我已經通過一個調試器,並觀察它的Y座標。我的蚊子確實在猛撲下來,然後又回到了上面......但是,它們的速度太快了,人眼看不到它。
因此,我需要一種方式順利地將它們向下移動,以便它實際上可見。 我目前無法將圖像嵌入到我的帖子中,但是我已經制作了一個GIF來展示我想要的效果。 Here's a link to my GIF
事情我已經嘗試:
- 複製我的移動代碼(如下圖所示)的第一行,並改變它,這樣它只會影響到Y座標。
- 結果:蚊子仍然飛得太快,看不到。
- 改變我的mosquitoe的velocity.Y包含一個不是0的Y,這樣我的運動代碼也會改變Y位置而不是僅僅是X位置。
- 結果:博弈陷入無限循環,因爲我的移動代碼在update()函數中,代碼從來沒有退出循環,以便它可以更新位置...
這是我在更新中的移動代碼。 蚊子一直向右移動,然後一路向左。
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)中。如果生成特定數字,我有一個隨機數字生成器,用於調用突襲方法。 我還沒有嘗試你的解決方案,因爲我目前在學校。但是,我會嘗試當我回家:) –