【问题标题】:How to make animate dealing cards of deck in Unity如何在 Unity 中制作动画处理卡组
【发布时间】:2016-07-21 14:48:46
【问题描述】:

不久前我开始学习团结。现在,我在处理卡片动画并将其展示给玩家时遇到问题,

看起来像:

我不知道制作它的算法。我试过搜索,但没有找到任何解决方案。我正在考虑制作一个像图片中一样的文件以在游戏开始时加载它(非常愚蠢......)。

我需要一些帮助。如果可以的话,请给我解决方案!。

非常感谢。

【问题讨论】:

  • 在大多数情况下,它似乎只是在它们在中心的初始位置和它们在桌子上的最终位置之间进行补间,再加上最后的排序,这也不过是补间.
  • @Bart 我有iTween 在打牌时制作动画。但是对于发牌我没有解决方案:)
  • 我不太会玩纸牌,那有什么区别呢?我处理这个动画的方法是将卡片(显示它们的背面)补间到它们的位置。对于底行,在补间完成后将它们与实际的正面卡交换。
  • @Bart 对,我明白了。你能给我示例代码,让卡片动画从 (0,0) 移动到玩家吗?
  • 恐怕不行。你必须弄清楚那个。试试看。如果您失败了(但有代码要显示),请更新您的问题以包含您尝试过的内容。

标签: animation unity3d unity5


【解决方案1】:

@Bart 我确实尝试过并取得了一些结果:)

我的代码

IEnumerator InitCardWithAnimation(GameObject[] arrayCards)
    {
        SortCards sort = new SortCards();
        arrayCards = sort.SortCard(arrayCards); ;
        Camera cam = Camera.main;
        float height = 2f * cam.orthographicSize;
        float widthCard = arrayCards[0].GetComponent<Renderer>().bounds.size.x;
        float x = -6 * (widthCard / 3);
        int layer = 1;
        float z = 13;
        foreach (GameObject item in arrayCards)
        {


            GameObject rocketClone = (GameObject)Instantiate(item, new Vector3(0, 0, z), transform.rotation);

            iTween.MoveTo(rocketClone, new Vector3(x, -height / 3, z), 1.5f);
            yield return rocketClone;
            yield return new WaitForSeconds(0.3f);

            x += (widthCard / 3);
            //increase ordermin layer
            rocketClone.GetComponent<SpriteRenderer>().sortingOrder += layer;
            layer++;
            z--;
            arrCard.Add(rocketClone);
        }
    }

并预览

【讨论】:

    【解决方案2】:

    与其使用动画,不如将实例化的卡片位置调整到最终位置。您可以设置一个列表来检查该位置是否有卡片,如果有,将下一张卡片移动到下一个位置。卡片背面到达该位置后,取出卡片背面并将实际卡片放在卡片背面移动到的位置。然后,您可以使用这些位置,因此当玩家移动一张牌时,它可以捕捉并移动另一张牌的位置。

    【讨论】:

      猜你喜欢
      • 2022-10-25
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 2021-06-23
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多