首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Infinity Runner游戏中冻结和解冻敌人

在Infinity Runner游戏中冻结和解冻敌人
EN

Stack Overflow用户
提问于 2019-05-07 18:04:33
回答 1查看 44关注 0票数 0

我有一个生成无限等级积木的游戏,并且总是有3个积木被实例化,问题是这些等级积木有移动的敌人,有时玩家太慢或太快,敌人处于不应该的位置(比如掉进玩家并立即杀死他)。

我想的解决方案是冻结每个添加的块(当前实例化块列表中的最后一个),当玩家进入下一个块时,解冻它,这样当玩家进入块时,敌人就开始移动,而不是当它生成时。

以下是冻结和解冻的函数:

代码语言:javascript
复制
public void UnfreezeCurrentLevelBlockEnemies()
{
    if(currentBlocks.Count == 3)
    {
        foreach (Rigidbody2D enemy in currentBlocks[1].transform)
        {
            enemy.constraints = RigidbodyConstraints2D.None;
            Debug.Log("I'm in index 1 levelblock freezing" );
        }
    } else
    {
        Debug.LogWarning("Generating initial blocks, blocks will not be 
        frozen yet...");
    }

}

public void FreezeLastLevelBlockEnemies()
{
    if (currentBlocks.Count == 3)
    {
        foreach (Rigidbody2D enemy in currentBlocks[2].transform)
        {
            enemy.constraints = RigidbodyConstraints2D.FreezeAll;
            Debug.Log("I'm in index 2 levelblock freezing" );
        }
    } else
    {
        Debug.LogWarning("Generating initial blocks, blocks will not be 
        frozen yet...");
    }
}

我怎样才能冻结所有的敌人和解冻他们?

我想冻结敌人(鸟和老鼠),这是关卡结构:

游戏视频,让你更好地理解问题:https://www.youtube.com/watch?v=lXzOoEbo0Aw&feature=youtu.be

EN

回答 1

Stack Overflow用户

发布于 2019-05-07 19:26:39

解决了它,以防有人遇到我的问题,这里是如何冻结敌人的:

代码语言:javascript
复制
public void FreezeLevelBlockEnemies(int index)
{
    if (currentBlocks.Count == 3 && freezeEnemiesOutOfCurrentBlock)
    {
        foreach (MouseMovement enemy in currentBlocks[index].GetComponentsInChildren<MouseMovement>())
        {
            enemy.GetComponent<Rigidbody2D>().constraints = RigidbodyConstraints2D.FreezeAll;
            Debug.Log("I'm in " + index + " index levelblock freezing");
        }
        foreach (BirdMovement enemy in currentBlocks[index].GetComponentsInChildren<BirdMovement>())
        {
            enemy.GetComponent<Rigidbody2D>().constraints = RigidbodyConstraints2D.FreezeAll;
            Debug.Log("I'm in " + index + " index levelblock freezing");
        }
    } else
    {
        Debug.LogWarning("Freeze is disabled");
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56020153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档