0

我说我是初学者。

我在项目期间有一个问题。

我目前正在实施一个纸牌匹配游戏。

当我开始游戏时,图像是从外部路径(D:/ ..)加载的。

我的问题在下面的代码中。

 public void createCardList()
        {
            int count_x = 0;
            int count_y = 0;

            GameObject parent_area = GameObject.Find("GameMain");
            List<int> num = createRandomIndex(createArrayIndex());

            for (int i = 0; i < card_list.Count; ++i)
            {
                if ((i % CARD_ROWS) == 0 && i > 0)
                {
                    count_y += 1;
                    count_x = 0;
                }

                GameObject card_prefab_load = Resources.Load("Prefabs/card") as GameObject;
                GameObject card_prefab_instantiate = Instantiate(card_prefab_load, card_prefab_load.transform.position, Quaternion.identity);

                float card_position_x = (CARD_WIDTH + CARD_SPACE) * (i % CARD_ROWS) - 290f;
                //Debug.Log("card_position_x" + card_position_x);
                float card_position_y = count_y * (CARD_HEIGHT + CARD_SPACE) - 280f;
                //Debug.Log("card_position_y" + card_position_y);

                card_prefab_instantiate.transform.SetParent(parent_area.transform);
                card_prefab_instantiate.transform.name = "card_" + num[i];
                card_prefab_instantiate.transform.localScale = new Vector3(1f, 1f, 1f);
                card_prefab_instantiate.transform.localPosition = new Vector3(card_position_x, card_position_y, 1f);

                StartCoroutine(firstRotateOriginalImage());
            }
        }

        // Rotate image
        private IEnumerator firstRotateOriginalImage()
        {
            yield return new WaitForSeconds(2f);

            GameObject findCardList = GameObject.Find("GameMain");

            for (int i = 0; i < findCardList.transform.childCount; ++i)
            {
                // I don't know what code to put in this part.
            }
        }

我要实现的内容如下。

  1. 当卡片旋转值达到90度时,如何将外部导入的图像更改为子GameObject的Sprite Image?

  2. 第一个任务完成后如何将子对象旋转360度?

例如下图。 在此处输入图像描述

箭头表示翻转卡片的顺序。此外,在 12 个 GameObjects 中,有 6 个 GameObjects 尝试实现一个通用图像。

我知道的不多。我需要你的帮助。

4

2 回答 2

0

有很多方法可以做到这一点......

  1. transform.Rotate(...)
  2. transform.RotateAround(...)
  3. transform.localEulerAngles = transform.localEulerAngles.X|Y|Z + amount
  4. transform.localRotation = transform.localRotation*relativeRotation /*= a Quaternion*/
  5. 完全是别的东西……
于 2017-10-30T16:45:20.857 回答
0

我对我对您的问题的理解程度持怀疑态度...但是您似乎只想简单地翻转卡片,不是吗?

我采用的方法是将每张卡片作为正面(在 Y 轴上旋转 180 度)和背面的组合,两者都是空游戏对象的子项。

这样你就可以简单地使用旋转 Card 对象transform.Rotate(0, 180, 0)

要在协程中使用它,您可以这样做

//Speed of animation (here 0.55 seconds)
float degreesPerSecond = 200f;

//The amount you want to rotate
float maxDegrees = 180f;

//Animate
for (float f = maxDegrees; f < 0;)
{
    //How much to rotate
    float rot = degreesPerSecond * Time.deltaTime;

    //Rotate children
    foreach(var child in transform)
        child.Rotate(0, rot, 0);

    //Record rotation
    f -= rot;

    //Wait next frame
    yield return null;
}

//Round to desired rotation
foreach(var child in transform)
        child.position = new Vector3(child.position.x, maxDegrees, child.position.z);
于 2017-10-30T16:47:26.670 回答