게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
카드 회전...(앞면->뒷면) 만들었는데 개선사항 부탁드립니다 ㅠ
게시물ID : programmer_1888짧은주소 복사하기
작성자 : 아름다운썬
추천 : 1
조회수 : 864회
댓글수 : 5개
등록시간 : 2014/03/17 03:52:17
카드 A 의 앞면은 사과, 뒷면은 딸기 이미지 입니다.
 
카드를 선택하면 카드가 앞면->뒷면으로 회전하는 애니메이션을 만들었습니다.
 
그런데 과연 이게 최선은...결코 아닌듯한데;;
좀 더 보기좋고 효율좋게 개선할 수 있는 부분 있으면 부탁드리겠습니다.
 
void Update(){
    //키가 눌렸나 확인
    if(Input.GetKeyDown(KeyCode.LeftArrow))
    {
         flip = true;
     }
    //키가 눌렸다면,
    if(flip == true)
    {
       //카드가 앞면이라면
       if(CurrentCard == "Front")
       {
            //0~180도까지 회전해라
            if(transform.localEulerAngles.y < 180.0f)
            {
                 transform.Rotate(Vector3.up*(120* Time.deltaTime));
                 //회전도중 카드가 90도가 되었다면
                 if(transform.localEulerAngles.y>=90 && change==false)
                { 
                      //카드의 이미지를 사과->딸기로 바꾸고, 태그도 바꿔라, 그림이 바뀌었다고 플래그(change=true)바꿔라  
                      ChangeCard ();
                 }
            }
           //180도 이상으로 회전되었다면, 다음 작업을 위한 초기화 작업
          else
          {
              //카드는 뒷면이고, 카드 그림 안변했고, 카드 회전 조건 아니고, 그림의 y 축을 정확히 180으로 맞춘다
              CurrentCard = "Back";
              change = false;
              flip = false;
              transform.rotation =Quaternion.Euler(0.0f,180.0f,0.0f);
            }
     }
 
   //카드가 뒷면이라면
   else if(CurrentCard == "Back")
   {
        //앞에서 180도로 맞추었음. 180~357사이라면(360으로 안한 이유는...이 높의 값이 358.2 다음에 0.04이렇게 변할때가 있음
        if(transform.localEulerAngles.y <357.0f)
        {
              //카드 회전
               transform.Rotate(Vector3.up*(120* Time.deltaTime));
               //270도 일때 그림 변화 및 태그 변화
               if(transform.localEulerAngles.y>=270 && change==false)
               { 
                      ChangeCard ();
                }
           }
          else
         {
                //카드는 뒷면이고, 카드 그림 안변했고, 클립 실행조건 아니고
               CurrentCard = "Front";
              change = false;
              flip = false;
              transform.rotation =Quaternion.Euler(0.0f,0.0f,0.0f);
          }
   }
  }
 }
 
 void ChangeCard()
 {
  TempSprite = gameObject.GetComponent<SpriteRenderer>().sprite;
  
  gameObject.GetComponent<SpriteRenderer>().sprite = BackSprite;
  
  BackSprite = TempSprite;
  
  tempTag = gameObject.tag;
  gameObject.tag = BackTag;
  BackTag = tempTag;
  change = true;
 }
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호