簡體   English   中英

如何使用Update方法中的if語句將新圖像添加到XNA C#中已經在運行的游戲的窗口中?

[英]How do I add a new image to the window of an already running game in XNA C# using an if statement in the Update method?

我很確定以前曾有人問過類似的問題,但我一直找不到。 無論如何,我正在制作一個帶有兩個運動對象(以萬聖節為主題)的簡單游戲動畫。 當物體碰到牆壁時會從牆壁上反彈,但是當兩個物體互相撞擊時,我還需要顯示圖像。 我嘗試了多種方法,但沒有一種起作用。 它們無效或引發錯誤。 無論如何,這是我嘗試的最后一件事:

 public PumpkinCheckCollisionPumpkin(GameTime gameTime)
    {
        if (pumpkin1.BoundingBox.Intersects(pumpkin2.BoundingBox))
        {
            pumpkinCollide = True;
            Draw(gameTime);
        }

然后,我嘗試將那個布爾值(我之前設置為false)傳遞給繪制部分,但是它沒有用。 在Update方法中調用了上述方法。 我嘗試在Update(GameTime gameTime)部分中調用draw方法,但這也不起作用。 當兩個對象碰撞時,除了已經顯示的圖像外,如何觸發另一幅圖像顯示? (同樣,該公共方法最初是私有的,但是將其公開,因此我嘗試的另一種策略可能起作用(無效))。

答案很簡單, 永遠不要直接調用Draw函數

在這種情況下,我將設置一個類級別狀態變量,該變量持有一個事實,即應該在下一個繪制調用上繪制碰撞圖形,然后才可能發生。

你抹去每次你反正畫的時間,所以即使調用沒有正常工作,接下來的Draw調用(這將真正很快發生)將抹掉它。 出於相同的原因,請不要在Draw調用發生后取消設置該標志,因為它會比您的玩家看到它的速度更快地被擦除。 您需要將其在屏幕上保留一段時間。

您可以通過設置一個變量來保存設置標志的時間,然后根據當前時間對其進行檢查,直到經過了足夠的“可見”時間為止。 然后,這將清除“顯示碰撞”標志,並且圖形將不再繪制。

只需讓框架處理該調用的時間安排,然后讓您設置的狀態驅動繪制的內容即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM