카드 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;
}