1 분 소요

자동차움직이기

자동차를 움직이기 위한 스크립트를 작성해보겠습니다.

우선, Assets 폴더에 새로운 Scripts 폴더를 생성합니다.

Scripts 폴더안에 새로운 PlayerControl 라는 이름의 C# 스크립트를 만들어 Player 오브젝트에 붙여줍니다.

image

Player 오브젝트를 클릭해 스크립트가 적용되었는지 확인한 뒤 Is Kinematic 를 체크해줍니다.

image

PlayerControl.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerControl : MonoBehaviour
{

    public float moveSpeed;     //이동속도
    bool sideMoving = true;     //방향전환
    bool firstInput = true;     //첫클릭 확인용


    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if(GameManager.instance.gameStarted)
        {
            Move();
            CheckInput();
        }
    }

    void Move()
    {
        //플레이어 이동
        transform.position -= transform.forward * moveSpeed * Time.deltaTime;
    }

    //게임준비(첫 클릭인지 확인하는함수)
    void CheckInput()
    {
        //첫 클릭이라면 무시
        if(firstInput)
        {
            firstInput = false;
            return;
        }

        //두번째 클릭부터 마우스클릭으로 방향전환
        if(Input.GetMouseButtonDown(0))
        {
            ChangeDirection();
        }
    }

    //플레이어 방향전환
    void ChangeDirection()
    {
        if(sideMoving)
        {
            sideMoving = false;

            transform.rotation = Quaternion.Euler(0, -90, 0);
        }
        else
        {
            sideMoving = true;
            transform.rotation = Quaternion.Euler(0, -180, 0);
        }
    }
}

이제 GameManager 라는 이름의 스크립트를 만들어줍니다.

GameManager.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager instance;

    public bool gameStarted;        //게임이 시작됐는지 확인할 변수

    private void Awake()
    {
        if(instance == null)
        {
            instance = this;
        }
    }

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if(!gameStarted)
        {
            //마우스 클릭시 차가 움직임
            if(Input.GetMouseButtonDown(0))
            {
                GameStart();
            }
        }
    }

    //게임 시작
    public void GameStart()
    {
        gameStarted = true;
    }


    //게임 오버
    public void GameOver()
    {

    }
}

GameManager 라는 이름의 오브젝트를 만들고, GameManager.cs를 붙여줍니다.

그 다음, Player 오브젝트를 선택하고 moveSpeed를 8로 설정해줍니다.

image

아래 영상과 같이 움직인다면 잘 된것입니다.

댓글남기기