아카이브

8/1 유니티 복습 본문

유니티 기초

8/1 유니티 복습

timbercat 2023. 8. 2. 02:41

스와이프해서 자동차 이동

 

CarController 스크립트

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

public class CarController : MonoBehaviour
{
    float moveSpeed = 0;
    float dampingCoefficient = 0.96f;   //감쇠계수 

    private Vector3 startPos;  //down 했을때 위치 
   
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        //스와이프의 길이를 구한다
        if (Input.GetMouseButtonDown(0))
        {
            //마우스 왼쪽 버튼을 눌렀다면
            this.startPos = Input.mousePosition;
        }
        else if (Input.GetMouseButtonUp(0))  
        {
            //왼쪽 버튼을 떼었다면            
            Vector3 endPos = Input.mousePosition;
            float swipeLength = endPos.x - startPos.x;
            
            //스와이프 길이 처음 속도로 변경 
            this.moveSpeed = swipeLength / 500f;
        }

        //x축으로 moveSpeed만큼 매 프레임마다 이동 (Self: 로컬좌표계)
        this.transform.Translate(this.moveSpeed, 0, 0);
        //감쇠 매프레임마다 0.95f를 moveSpeed에 곱해서 적용 -> 점점 줄이겠다 -> 0.00xx 0과 비슷해짐 
        this.moveSpeed *= this.dampingCoefficient;
    }
}

결과

 

거리 정보 표시

 

GameDirector 스크립트

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UIElements;

public class GameDirector : MonoBehaviour
{
    GameObject carGo;
    GameObject flagGo;
    GameObject distanceGo;
    // Start is called before the first frame update
    void Start()
    {
        //자동차
        this.carGo = GameObject.Find("car");
        //깃발
        this.flagGo = GameObject.Find("flag");
        //UI
        this.distanceGo = GameObject.Find("Distance");
    }

    // Update is called once per frame
    void Update()
    {
        //매프레임마다 자동차와 깃발의 거리를 계산해서 UI에 출력해야 함   
        float distanceX = this.flagGo.transform.position.x - this.carGo.transform.position.x;
        Text text = distanceGo.GetComponent<Text>();
        text.text = string.Format("목표지점까지 거리 {0:0.00}m", distanceX);

    }
}

결과

 

게임오버 표시 추가

 

GameDirector 스크립트

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UIElements;

public class GameDirector : MonoBehaviour
{
    GameObject carGo;
    GameObject flagGo;
    GameObject distanceGo;
    // Start is called before the first frame update
    void Start()
    {
        //자동차
        this.carGo = GameObject.Find("car");
        //깃발
        this.flagGo = GameObject.Find("flag");
        //UI
        this.distanceGo = GameObject.Find("Distance");
    }

    // Update is called once per frame
    void Update()
    {
        //매프레임마다 자동차와 깃발의 거리를 계산해서 UI에 출력해야 함           
        float length = this.flagGo.transform.position.x - this.carGo.transform.position.x;
        Text text = distanceGo.GetComponent<Text>();

        if (length >= 0)
        {
            text.text = string.Format("목표지점까지 거리 {0:0.00}m", length);
        }
        else
        {
            text.text = "게임 오버";
        }
    }
}

'유니티 기초' 카테고리의 다른 글

아이템 착용하기  (0) 2023.08.11
클릭한 위치에 몬스터 생성/삭제  (0) 2023.08.10
주말과제(Dog Knight)  (1) 2023.08.06
유니티짱 직선으로 움직이기  (0) 2023.08.04
7/31 유니티 복습  (0) 2023.07.31