MonoGame-从不同的类调用相同的函数会导致不同的行为

独自的

我正在使用XNA / MonoGame开发游戏,但遇到了错误。

我有这个功能Expload,它使用精灵表显示了一个非常简单的动画。

public void Exploade(Rectangle explosionRect)
    {
        ex = new ExpolsionAnimation(content, "Explsion4", explosionRect,
            _frameWaiteTime:50,
            _frameWidth:90 , _frameHeight: 45,
            _rows: 4       , _culloms: 3,
            _rotation: 0
            );

        playAnimation = true;
    }

我从2个类中调用此函数:

  • 生成该函数的类,称为Arrow
  • 一个不同的类,它调用currentArrow.Explode(并且可以正常工作),称为OnCollsionEvents

这是我在不同类中调用函数的方式:在Arrow类中(这给了我问题/错误:

 public override void Update(GameTime gt)
    {
        if (!MonsterHit)
        {
            this.location.Y -= movmentSpeed;
        }


 //when the arrow touch the top of the window, it need to expload, but for some reason when i start the animation here, it just doesn't work.

       if (ReachedTheTop)
            this.Exploade(new Rectangle(location.X - 10, 1, 30, 30));

       //here i start updating the animation
        if (playAnimation)
            ex.Update(gt);

        base.Update(gt);
    }

OnCollsionEvents类中

public void Update(SpaceShip _spaceShip, Monsters _monsters)
{
    List<Arrow> gameArrows = player.Gun.ArrowList;

    if (MonsterCount > 0)
    {
            foreach (var monster in monsters.MonstersList)
            {

                if (monster.ReachedTheButtom)
                {
                    MonsterHitTheFloor = true;
                }

                if (monster.CollsionWith(player))
                {
                    MonsterHitTheSpaceship = true;
                }

                foreach (var currentArrow in gameArrows)
                {
                if (currentArrow.CollsionWith(monster))
                {
                    currentArrow.MonsterHit = true;
                    currentArrow.Exploade(new Rectangle(monster.Location.X, monster.Location.Y, monster.AreaRect.Width, monster.AreaRect.Height));

                    monster.GotHit = true;
                }
            }
    }
}

这是Arrow.Update的调用位置(在Gun类中)

      public override void Update(GameTime gt)
        {
            if (arrowsNotEmpty)
            {
                for (int i = 0; i < ArrowList.Count; i++)
                {
                    ArrowList[i].Update(gt);
//because of the bug, i cant even remove an arrow afther it reach the top of the window
//because the animation is not Ended.
                    if ((ArrowList[i].IsOverTheTop || ArrowList[i].MonsterHit) && ArrowList[i].AnimationEnded)
                        ArrowList.RemoveAt(i);
                }
            }
    }

现在我遇到的问题是这样的。在动画类中,我有一个整数,可以通过毫秒,因此我可以创建一种计时器来运行动画。当我调用函数Exploade并开始更新OnCollsionEvents类中的动画时,整数值为64并正确启动动画。

当我从Arrow调用Exploade并开始更新时,整数值为16,这不会启动动画。

我不明白的是,如何可能从不同的类调用相同的函数,并在创建的同一类中更新该函数,并获得不同的结果。

  • 我错过了什么?
  • 还是我应该在哪里寻找?
  • 什么是测试这种东西的好方法?
独自的

我发现了我的问题。

当箭头到达屏幕顶部时,它不断爆炸。所以我只添加另一个if语句,以检查是否没有爆炸动画特效运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不同的类中使用 Monogame GraphicsDeviceManager?

来自分类Dev

MonoGame安装的程序集与MonoGame.Binaries NuGet软件包中的程序集有何不同?

来自分类Dev

MonoGame安装的程序集与MonoGame.Binaries NuGet软件包中的程序集有何不同?

来自分类Dev

(Monogame)更新方法导致极度滞后

来自分类Dev

在MonoGame(XNA)中绘制Bezier曲线会产生划痕线

来自分类Dev

Windows Phone 8 MonoGame初始化未被调用

来自分类Dev

如何重新启动XNA游戏类(Monogame)

来自分类Dev

如何重新启动XNA游戏类(Monogame)

来自分类Dev

Monogame - 在第二个脚本/类中的级别

来自分类Dev

MediaPlayer切换歌曲时,Ram的使用量会增加(Monogame c#)

来自分类Dev

从不同的类调用一个类中的函数

来自分类Dev

在Swift中从不同的类调用相同的属性?

来自分类Dev

在Swift中从不同的类调用相同的属性?

来自分类Dev

如何基于MonoGame创建类库以在UWP,iOS和Android中使用

来自分类Dev

为什么MonoGame的Rectangle类字段在F#中不可变?

来自分类Dev

为什么在 iOS 和 Android 的 MonoGame Shared 项目中没有 Activity1 类?

来自分类Dev

MonoGame只是XNA吗?

来自分类Dev

MonoGame按键琴弦

来自分类Dev

创建Backgroundthread Monogame

来自分类Dev

MonoGame GetData实现的异常

来自分类Dev

MonoGame / XNA旋转图像

来自分类Dev

源目录中的MonoGame

来自分类Dev

Monogame Sprite Alpha混合

来自分类Dev

Monogame-载入图块

来自分类Dev

MonoGame GetData实现的异常

来自分类Dev

在Monogame中订购对象

来自分类Dev

MonoGame中的SimplexNoise地形

来自分类Dev

修复了MonoGame模型拉伸

来自分类Dev

具有Winforms的Monogame

Related 相关文章

热门标签

归档