플레이어 초상화 변경

ssungho·2023년 5월 3일
0

목표


초상화 아이콘을 캐릭터로 변경

내용


1. 초상화를 캐릭터로 변경

기존에는 플레이어가 캐릭터를 선택하면 플레이어 정보창에 캐릭터의 아이콘을 보여주는 방식이었는데 캐릭터 자체를 보여주게 만들것이다.

처음으로 PlayerManager에 Player의 각 요소들을 따로 저장하고 있었는데 Player라는 class로 묶어서 관리하도록 바꿨다.

public class Player
{
    public Character player1_Char; // 플레이어1의 캐릭터.(currentCharacter), 삭제할거같다.
    public GameObject player1_Character; // 플레이어1의 게임 캐릭터(게임오브젝트)
    public Sprite player1_Icon; // 플레이어1의 아이콘
    public string player1_playerName; // 플레이어1의 이름.
    public int player1_Score; // 플레이어1의 점수.
}

플레이어마다 정보를 묶어서 관리할 수 있게 되었다. (아래는 유니티 화면)

다음으로 게임 화면에서 플레이어의 아이콘 대신 캐릭터로 바꿔주는 작업을 진행했다.
참고한 블로그: https://dallcom-forever2620.tistory.com/43 ****

기존에 아이콘을 넣어주기 위해 사용하던 Image 오브젝트를 RawImage로 변경했다.

위는 이미지 사용, 아래는 raw 이미지 사용

그다음 텍스쳐 폴더를 만들고 Create → Render Texture를 생성한다.

여기서 나는 size만 512 * 512로 수정해줬는데 size는 나타낼 픽셀 수를 의미하기에 높을수록 선명해진다.

이제 캐릭터를 보여줄 카메라를 생성하고 그 카메라에 방금 만든 Render Texture를 붙여준다.

카메라 속성에 Target Texture에 넣어주면 된다.

Projection은 Orthographic으로 설정하여 원근감을 없앤 상태로 ui에 출력하게 만들었다.

UI의 RawImage에도 Render Texture를 연결하면 끝!

이제 카메라와 UI가 연결되어 카메라가 찍는 물체가 RawImage에 나타나게 되는 것인데, 그래서 카메라 앞에 캐릭터를 생성하는 코드를 작성했다.

using UnityEngine;

public class CharacterSpawn : MonoBehaviour
{
    [SerializeField] 
    Transform spawnPosition; // 캐릭터 생성 위치
    [SerializeField]
    GameObject player1Character; // 플레이어 캐릭터

    private void Awake()
    {
        // 플레이어1 캐릭터를 게임오브젝트로 저장.
        player1Character = Resources.Load<GameObject>($"Characters/{PlayerManager.Instance.player1.player1_Char}");
        PlayerManager.Instance.player1.player1_Character = player1Character;
    }

    void Start()
    {
        SpawnCharacter();
    }

    void SpawnCharacter()
    {
        // 캐릭터 생성.
        GameObject character = Instantiate(player1Character, 
            spawnPosition.position, 
            Quaternion.LookRotation(spawnPosition.forward));
    }
}

spawnPosition에 유니티 에디터에서 직접 스폰위치로 지정할 빈 오브젝트를 만들어 연결해줬다.

그다음 player1Character에 playerManager에 등록되어있던 캐릭터를 불러와 Resoures.Load를 이용해 저장한다음 SpawnCharacter()라는 함수로 스폰위치에 생성하게 만들었다.

(CharacterSpawn이라는 빈 오브젝트에 스크립트를 연결하고 SpawnPosition을 설정해 준 모습)

카메라 시점과 빨간 다이아몬드로 표시된 곳이 스폰 지역이다.

마지마막으로 결과 화면이다.

마침


다음 작업으로는 게임의 진행에 필요한 요소들을 설계할 것 같다.

profile
클라이언트 개발자가 되는 그날까지 👊

0개의 댓글