2016-07-19 2 views
1

Я начинаю изучать единство совсем недавно. Прямо сейчас, у меня проблема с дилинговые карт анимации и показать игрокам,Как сделать анимированные карты колоды в Unity

выглядит следующим образом:

animation

Я не знаю алгоритм, чтобы сделать это. Я пробовал поиск, но не нашел решения. Я думаю о том, чтобы сделать файл флеш, как на картинке, чтобы загрузить его, когда игра начинается (очень глупо ...).

Мне нужна помощь. Если можете, пожалуйста, дайте мне решение!

спасибо.

+2

По большей части это только кажется, что промежуточные кадры карты между их начальное положение в центре и их конечное положение на столе, плюс вид в конце, что также не намного больше, чем твин. – Bart

+0

@Bart У меня есть [iTween] (http://itween.pixelplacement.com/index.php), чтобы сделать анимацию при игре в карты. Но с дилинговыми картами у меня нет решения :) –

+1

Я не из карточного игрока, так в чем же разница? То, как я подхожу к этой анимации, - это просто подкрутить карты (показывая их спины) на свои позиции. И для нижнего ряда, поменяйте их фактической лицевой карточкой, когда анимация будет завершена. – Bart

ответ

0

Вместо использования анимации вам может быть лучше привязать позицию созданной карты к последней позиции. Вы можете установить список, чтобы проверить, есть ли карта в этом положении, если это переместить следующую карту в следующую позицию. Как только задняя часть карты достигнет этого положения, снимите заднюю часть карты и поместите фактическую карту в положение, в которое была обращена задняя часть карты. Затем вы можете использовать эти позиции, поэтому, когда игрок перемещает карту, он может щелкнуть и переместить другую позицию карты.

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); 
     } 
    } 

и предварительный просмотр

enter image description here

+0

Хорошо выглядит для меня :) – Bart

Смежные вопросы