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

[최신AI기술] ChatGPT와 Unity Muse를 활용하여 코드 생성하기

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

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

오늘은 대화형 AI 채팅 기능을 사용해보고 서로 비교해볼까 해요.

Unity의 AI 도구 플랫폼, Unity Muse

Unity Muse는 인공 지능을 활용해서 Unity 기술 관련해서 아래 기능들을 제공한다고 해요. 

  • Chat: Unity 문서를 검색하고 샘플 코드를 생성할 수 있는 대화형 AI 채팅.
  • Texture: 자연어나 이미지 입력을 받아 PBR(Physically-Based Rendering) 재질을 생성.
  • Sprite: 간단한 프롬프트로 2D 스프라이트를 생성.
  • Animate 및 Behavior: 이 두 기능은 아직 프리릴리스 단계로, 각각 인간형 캐릭터의 애니메이션과 인터랙션 행동을 설계.

그래서 ChatGPT 와 Unity Muse를 활용해서 대화형 AI 채팅 기능을 사용 및 비교해볼까 해요.

[ChatGPT와 Unity Muse를 사용할 준비를 하는 IntelliOneStudio 개발자]

 

ChatGPT와 Unity Muse에 동일한 질문하기

질문 1. Unity에서 새 프로젝트를 생성하는 방법을 자세히 설명해줄래

[ChatGPT 의 답변 내용]

 

[Unity Muse 의 답변 내용]

 

ChatGPT가 Unity Muse 보다 좀 더 상세히 설명하는 것 같아요.

질문 2. 캐릭터가 이동하면서 아이템을 먹고 성장해서 진화하는 하는 앱을 만들거야. 이 게임의 이름을 정해서 새로운 프로젝트를 만드는 방법을 알려줘

[ChatGPT 의 답변 내용]

 

[Unity Muse 의 답변 내용]

 

두번째 질문의 경우에도 ChatGPT가 Unity Muse 보다 좀 더 상세히 설명하는 것 같아요.

질문 3. 안드로이드와 iOS 기반으로 만들고 싶어. 어떤 템플릿을 선택해야할까?

[ChatGPT 의 답변 내용]

 

[Unity Muse 의 답변 내용]

 

세번째 질문의 경우에는 ChatGPT가 Unity Muse 보다 상세한 설명부터 게임 프로젝트 이름까지 정리를 했어요.

질문 4. 농부가 앞으로 뛰거나 걸어 가면서 아이템을 가지는 러너 게임을 Unity 로 만들고 싶어. 농부가 앞으로 뛰거나 걸어가는 기능을 설계 및 코드를 제공해줘

 

ChatGPT. PlayerController.cs
농부가 앞으로 뛰거나 걸어가면서 아이템을 수집하는 러너 게임을 Unity에서 만들기 위해 기본적인 플레이어 이동 메커니즘을 구현할 수 있습니다. 게임의 목적에 따라 농부 캐릭터가 자동으로 전진하게 하거나, 사용자 입력에 따라 전진 및 점프할 수 있게 설계할 수 있습니다.

다음은 농부 캐릭터가 앞으로 자동으로 뛰거나 걸어가면서 사용자의 입력에 따라 점프하는 기능을 갖춘 기본적인 Unity 스크립트 예시입니다.
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float speed = 5.0f; // 농부의 전진 속도
    public float jumpForce = 10.0f; // 점프 힘
    private Rigidbody2D rb; // Rigidbody 컴포넌트 참조
    private bool isGrounded = true; // 땅에 있는지 확인

    void Start()
    {
        rb = GetComponent<Rigidbody2D>(); // 시작할 때 Rigidbody 컴포넌트를 가져옵니다.
    }

    void Update()
    {
        // 농부를 자동으로 전진시킵니다.
        transform.Translate(Vector2.right * speed * Time.deltaTime);

        // 사용자가 점프 키를 누르면 점프합니다.
        if (Input.GetButtonDown("Jump") && isGrounded)
        {
            rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
            isGrounded = false; // 점프 후에는 공중에 있으므로 isGrounded를 false로 설정합니다.
        }
    }

    // 농부가 땅에 닿았는지 확인하는 함수
    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.collider.tag == "Ground")
        {
            isGrounded = true; // 땅에 닿으면 isGrounded를 true로 설정합니다.
        }
    }
}
이 스크립트는 Rigidbody2D 컴포넌트를 사용하여 물리 기반의 이동 및 점프를 구현합니다. 따라서, 농부 캐릭터에게 Rigidbody2D 컴포넌트와 이 스크립트를 추가해야 합니다. 또한, 점프를 할 수 있도록 isGrounded 변수를 사용하여 땅에 닿았는지 확인합니다.

구현 시 유의 사항:

물리 설정
: Rigidbody2D 컴포넌트의 Gravity Scale을 조정하여 캐릭터의 중력을 제어할 수 있습니다. 또한, Collision Detection을 Continuous로 설정하여 더 정확한 충돌 감지를 할 수 있습니다.
점프 조건: 이 예제에서는 isGrounded 플래그를 사용하여 땅에 닿았을 때만 점프할 수 있도록 했습니다. OnCollisionEnter2D 메서드를 사용하여 땅에 닿았는지 확인합니다.
태그 사용: 땅 게임 오브젝트에 "Ground" 태그를 지정하고, 스크립트 내에서 이 태그를 확인하여 땅에 닿았는지 판별합니다. Unity 에디터에서 게임 오브젝트에 태그를 추가하고 지정할 수 있습니다.

이 코드는 농부 캐릭터가 게임에서 자동으로 앞으로 이동하고, 사용자가 점프 버튼(일반적으로 스페이스바)을 누를 때 점프하는 기본적인 러너 게임의 이동 메커니즘을 구현한 것입니다. 추가적인 기능(예: 아이템 수집, 적과의 상호작용)은 이 기반 위에 더해질 수 있습니다.

 

Unity Muse. MovementScript.cs

Unity에서 농부 캐릭터가 앞으로 걷거나 뛰는 간단한 기능을 구현하는 방법은 여러 가지가 있습니다. 하나의 예로, 캐릭터의 Transform를 이용하여 그의 위치를 직접 조절하는 방법을 고려해 볼 수 있습니다.
아래에 이를 구현하는 간단한 C# 스크립트를 제공해 드리겠습니다. 이 스크립트는 농부 캐릭터가 앞으로 걷거나 뛰도록 하는 기본적인 로직을 담고 있습니다.
// 2024-04-15 AI-Tag 
// This was created with assistance from Muse, a Unity Artificial Intelligence product

using UnityEngine;

public class MovementScript : MonoBehaviour
{
    public float speed = 10.0f;  // 캐릭터의 이동 속도
    public float runMultiplier = 2f; // 달리기 속도 배율
    bool isRunning = false; // 캐릭터가 달리는지 여부

    void Update()
    {
        // 'Shift' 키가 눌리면 isRunning을 true로 설정
        if(Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
        {
            isRunning = true;
        }
        else
        {
            isRunning = false;
        }

        // 캐릭터의 이동 속도를 계산 (달리는 중이면 속도를 배수로 증가시킴)
        float moveSpeed = isRunning ? speed * runMultiplier : speed;

        // 'W' 키 또는 'UpArrow' 키가 눌리면 캐릭터를 앞으로 이동
        if(Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
        {
            transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
        }
    }
}
이 스크립트를 농부 캐릭터에 첨부하고, Unity 에디터의 Play모드를 실행하여 'W' 키 또는 'UpArrow' 키를 누르면 캐릭터가 앞으로 이동하는 것을 확인할 수 있습니다. 또한, 'Shift' 키를 누르면 캐릭터가 뛰는 것을 확인할 수 있습니다.  스크립트는 매우 기본적인 예제이며, 실제 게임 제작에서는 더 복잡한 입력 처리, 애니메이션, 물리 효과 등을 고려해야 할 수 있습니다. 또한, Unity의 새로운 입력 시스템이나 캐릭터 컨트롤러 컴포넌트를 사용하면 좀 더 고급적인 캐릭터 이동 기능을 구현할 수 있습니다.

 

주관적인 차이가 있겠지만 현재까지는 ChatGPT가 좀 더 친절(★    ★ )한 것 같아요.

[IntelliOneStudio 개발자가 'ChatGPT' 로고를 바라보며 미소 짓고 있는 모습]

 

오늘은 ChatGPT와 Unity Muse 에 관해 정말 아주 간단히 살펴봤어요. 

 

Unity Muse 는 Chat 기능 외 Unity 개발에 도움이 되는 좋은 기능들도 제공한다고 하니

Unity 개발자에게는 너무 좋은 소식일 것 같아요.

 

지금까지,

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

감사합니다.

728x90