본문 바로가기
▶ SCP전쟁 개발일지

#005 롤플레잉 게임 캐릭터 이동 조이스틱 구현

by 곰스타일 2024. 2. 23.
728x90
반응형
SMALL

 

 1. 조이스틱 조작에 따른 캐릭터 이동을 구현하기 위해 조이스틱 오브젝트, 스크립트 생성

 

1) Joystick 오브젝트(이미지)의 자식오브젝트로 Center 오브젝트(빈오브젝트), Stick 오브젝트 생성(이미지)

2) Joystick 오브젝트에 Bl_Joystick 스크립트 컴포넌트하고, 조작할 캐릭터 오브젝트 할당해야 함

3) 캐릭터 오브젝트는 콜라이더, 리디지바디 컴포넌트, 캐릭터 스크립트 필요

 

2. 캐릭터 오브젝트랑 스크립트 생성

 

1) 캐릭터 스크립트에 반드시 bl_Joystick 조이스틱 오브젝트 저장할 변수 선언 후 인스펙터에 오브젝트 할당해야한다.

 

*** PC또는 모바일 사양에 따라 이동 속도가 다르지 않도록 구현하는 방법

Update함수가 아니라 FixedUpdate 함수안에 코드 작성하기

FixedUpdate()

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;

public class SCP000 : MonoBehaviour
{
    
    public bl_Joystick joy;//조이스틱 오브젝트를 저장할 변수
    public float speed; //조이스틱에 움직일 플레이피쉬의 속도
    
    // Start is called before the first frame update
    void Start()
    {
        speed=1;
    }

    // Update is called once per frame
    void Update()
    {
        //스틱이 향해있는 방향을 저장
        Vector3 dir = new Vector3(joy.Horizontal, joy.Vertical, 0);
        
        //벡터의 방향은 유지하지만 크기를 1로 줄인다. 길이가 정규화되어 있지 않을 시 0으로 설정
        dir.Normalize();
        
        //오브젝트의 위치를 dir 방향으로 이동시킨다
        transform.position += dir * speed * Time.deltaTime;

        if (dir.x < 0) //만약 가로 방향이 - 라면 //역방향
            {
                transform.localScale = new Vector3(1f, 1f, 0f);
            }

            if (dir.x > 0) //만약 가로 방향이 + 라면 //정방향
            {
                transform.localScale = new Vector3(-1f, 1f, 0f);
            }
    }
}

 

 

(참고: 위 코드는 Update함수안에 작성되었으니 FixedUpdate로 수정하면 됨)

UJoystick.zip
0.02MB

 

 

 

728x90
반응형
LIST

댓글