본문 바로가기
디지털노마드

[5분개발] ChatGPT를 활용하여 Character Flipping 구현하기(1)

by 인텔리노마드라이프 2024. 4. 20.
728x90

안녕하세요. 인텔리원스튜디오(IntelliOneStudio)입니다.

오늘은 ChatGPT를 활용하여 Character Flipping 구현해볼께요.

ChatGPT를 사용해서 Character Flipping 기능 구현하기

캐릭터의 localScale.x 값을 조정하여 캐릭터를 수평 방향으로 뒤집는 방법을 

"Flipping" 또는 "Character Flipping"이라고 해요.

 

2D 게임에서 캐릭터의 방향을 전환할 때 자주 사용되는 간단하면서도 효과적인 기술이예요.

 

"Flipping"을 통해 캐릭터가 왼쪽이나 오른쪽으로 움직이는 방향을 빠르게 바꿀 수 있으며, 추가적인 애니메이션 에셋을 만들 필요 없이 기존 애니메이션을 재사용할 수 있어요.

 

[Flipping 관련 기사를 준비 중인 IntelliOneStudio 개발자]

 

이번에는 이전에 만들었던 코드에 Character Flipping 기술을 빠르게 적용해볼께요

[5분개발] ChatGPT를 활용하여 Unity 에서 대기(Idle) 애니메이션 만들기

 

[5분수정] ChatGPT를 활용하여 애니메이션 지연 문제 해결하기

그냥 ChatGPT에 생각나는대로 질문하면 되요

다음과 같이 편하게 요청했어요.

[질문] 앞으로 러닝하는 애니메이션을 사용해서 뒤로 뛰어가는 모습을 만들 수 없니? 아래 소스에 수정 사항을 반영해줘 
using UnityEngine;

public class PlayerAnimationController : MonoBehaviour
{
    private Animator animator;
    private float horizontalInput;
    private bool isRunning;

    void Start()
    {
        animator = GetComponent<Animator>();
    }

    void Update()
    {
        // 수평 입력을 가져옵니다.
        horizontalInput = Input.GetAxisRaw("Horizontal"); // GetAxisRaw를 사용하여 더 즉각적인 입력 반응을 얻습니다.

        // 입력에 따라 isRunning 상태를 결정합니다.
        isRunning = horizontalInput != 0;

        // 애니메이션 파라미터를 즉시 설정합니다.
        animator.SetBool("IsRunning", isRunning);
    }
}

[답변] 

앞으로 달리는 애니메이션을 사용하여 뒤로 뛰어가는 모습을 만들려면, 캐릭터를 뒤집어 앞으로 달리는 애니메이션을 재생함으로써 뒤로 달리는 것처럼 보이게 할 수 있습니다. Unity에서 이는 캐릭터의 로컬 스케일을 변경하여 달성할 수 있습니다.

즉, 캐릭터의 transform.localScale의 x 값을 음수로 만들어 캐릭터를 뒤집으면 됩니다.


아래 스크립트는 사용자가 왼쪽 방향키를 누르면 캐릭터를 뒤집어 뒤로 달리는 것처럼 보이게 하며, 오른쪽 방향키를 누르면 다시 정상 방향으로 달리게 하는 코드를 포함하고 있습니다.

using UnityEngine;

public class PlayerAnimationController : MonoBehaviour
{
    private Animator animator;
    private Rigidbody2D rb;
    private float horizontalInput;
    private bool isRunning;

    void Start()
    {
        animator = GetComponent<Animator>();
        rb = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        // 수평 입력을 가져옵니다.
        horizontalInput = Input.GetAxisRaw("Horizontal");

        // 달리고 있는지 여부를 결정합니다.
        isRunning = Mathf.Abs(horizontalInput) > 0;
        animator.SetBool("IsRunning", isRunning);

        // 캐릭터가 왼쪽 또는 오른쪽으로 달리고 있는지에 따라 방향을 전환합니다.
        if (horizontalInput < 0)
        {
            // 왼쪽으로 달리고 있으면 캐릭터를 뒤집습니다.
            transform.localScale = new Vector3(-1, 1, 1);
        }
        else if (horizontalInput > 0)
        {
            // 오른쪽으로 달리고 있으면 캐릭터의 방향을 원래대로 되돌립니다.
            transform.localScale = new Vector3(1, 1, 1);
        }
    }
}

이 스크립트를 플레이어 객체에 부착하고, 'IsRunning' 애니메이터 파라미터가 애니메이션 전환을 제어하도록 설정하면, 캐릭터가 왼쪽으로 이동할 때는 뒤로 달리는 것처럼 보이게 됩니다. 오른쪽으로 이동할 때는 정상적으로 앞으로 달리는 애니메이션을 사용합니다.

transform.localScale을 조정함으로써 캐릭터가 뒤로 달리는 것처럼 보이도록 할 수 있으며, 이는 캐릭터를 x축 기준으로 뒤집기 때문입니다.

 

 

이런 방식을 뭐라고 부르는지 궁금했어요.

그래서 아래와 같이 물어봤어요.

 

[질문] 이렇게 활용하는 방식을 뭐라고 부르니?
[답변] 

이러한 기법, 즉 캐릭터의 localScale.x 값을 조정하여 캐릭터를 수평 방향으로 뒤집는 방법은 주로 "Flipping" 또는 "Character Flipping"이라고 불립니다. 이는 2D 게임에서 캐릭터의 방향을 전환할 때 자주 사용되는 간단하면서도 효과적인 기술입니다.

"Flipping"을 통해 캐릭터가 왼쪽이나 오른쪽으로 움직이는 방향을 빠르게 바꿀 수 있으며, 추가적인 애니메이션 에셋을 만들 필요 없이 기존 애니메이션을 재사용할 수 있습니다.

이 방법은 특히 애니메이션 리소스를 절약하고자 할 때 유용하며, 개발 과정을 단순화시킬 수 있습니다. 각각의 이동 방향에 대해 별도의 애니메이션을 제작하지 않아도 되기 때문에, 작은 규모의 프로젝트나 리소스가 제한적인 상황에서 매우 효과적입니다.

 

[Flipping이 적용된 화면]

 

ChatGPT, 정말 모르는 게 없네요.

알고 있는 사실이지만 다시 보게 되니 정말 놀라지 않을 수가 없어요.

그리고 너무 기쁜 것도 사실이예요.

 

많은 라인의 코딩을 작성하기 위해 써야할 시간들을

새로운 것을 창작하는데 사용할 수 있어서 정말 기쁜 것 같아요.

 

[이제 코딩을 하기 위해 밤샘은 안녕 from IntelliOneStudio 개발자 ]

지금까지,

언제나 성장하는 인텔리원스튜디오(IntelliOneStudio)입니다.

감사합니다.

728x90