【问题标题】:Game Object invisible for a given time游戏对象在给定时间内不可见
【发布时间】:2017-10-24 14:19:35
【问题描述】:

大家好,目前我正在使用 SWINGAME 开发一个简单的 2D 游戏。我设置了 2 个对象之间的碰撞。所以当它们碰撞时,我想暂时让它们中的一个在一段时间内不可见。我被时间组件卡住了,假设我希望对象在 3 秒内不可见,之后它将变回默认对象。下面是两张图片,如果碰撞为真则显示image2,否则显示image1。顺便说一句,我使用不同的图像来表示隐形。这是我的代码。

玩家等级:

 public void Draw ()
        {
            if (invisible == true) {
                if(elapsedTime <= 3.0){

                elapsedTime += elapsedTime;
                SwinGame.DrawBitmap ("image2.png", (float)X, (float)Y);

                  } 
            }else {
                elapsedTime = 0;
                SwinGame.DrawBitmap ("image1.png", (float)X, (float)Y);
            }
        }

  public bool Invisible {
        get { return invisible; }
        set { invisible = value; }
       }

物体碰撞类:

{... //Some codes

    for(int i = 0; i < _obstacles.Count; i++)
    {
      if (_obstacles [i] is Invisible) {
         p.Invisible = true;
         p.Draw ();
           }
    }
//Some codes ...}

【问题讨论】:

    标签: c# game-engine 2d-games


    【解决方案1】:

    这应该可以帮助您使用StopWatch 类准确计算时间:

    //somewhere in your code
    Stopwatch sw = new Stopwatch();
                sw.Start();
    
    public void Draw ()
            {
                if (invisible == true) {
                    if(sw.ElapsedMilliseconds <= 3000){
    
                    SwinGame.DrawBitmap ("image2.png", (float)X, (float)Y);
    
                      } 
                }else {
                    sw.Restart();
                    SwinGame.DrawBitmap ("image1.png", (float)X, (float)Y);
                }
            }
    

    【讨论】:

    • 这会使图像可见 3 秒,然后消失。有什么想法吗?
    • 我刚刚添加了一个计时器并复制粘贴了您的代码。我需要查看更多代码以提供帮助。无论如何,我建议检查您是否在代码中的某处将 Visibility 属性设置为 false
    • 'p.invisible = true' 这可能是问题吗?我没有得到这部分,因为您正在绘制一个不可见的元素。在绘制时将可见性设置为 true,或者稍后手动更改可见性并将其设置为 true
    • "p.Invisible = true" 是调用getter和setter的属性。我的主要目的是在与另一个对象碰撞时将默认图像(image1)更改为不同的图像(image2)。并确保更改后的图像持续几秒钟。我正在使用图像来表示隐形。我希望这不会让您感到困惑:)
    • 我可以告诉你,在 else 子句中我建议使用 'sw.Restart()' 再次启动计时器,如果您想稍后启动计时器,可以考虑使用 'sw.Reset()'手动开启。如果这不是问题,那么你最好开始调试代码,这样你就知道是哪一行使图像消失了。希望我有所帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多