EasyCastleUNITY

Swipe car 음향 및 UI 추가 본문

유니티 기초

Swipe car 음향 및 UI 추가

EasyCastleT 2023. 8. 1. 17:30

CarCotroller

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

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

    private Vector3 startPos; // down 했을 때 위치 
    private Vector3 endPos; //up 했을 때 위치 
    // Start is called before the first frame update
    public AudioClip[] audioClips;
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        //왼쪽 마우스 버튼을 눌렀다면
        if (Input.GetMouseButtonDown(0))
        {
            Debug.LogFormat("Down: {0}", Input.mousePosition);
            this.startPos = Input.mousePosition;
        }
        //버튼이 띄어지는 순간
        else if(Input.GetMouseButtonUp(0))
        {
            Debug.LogFormat("Up: {0}", Input.mousePosition);
            this.endPos = Input.mousePosition;
            //Vector3 c = this.endPos - this.startPos;
            float swipeLength=this.endPos.x - this.startPos.x;
            Debug.LogFormat("swipeLength:{0}",swipeLength);
            //화면 좌표계에서의 두점사이의 거리에 비례해서 이동
            //but, 이동 좌표계가 안맞아서 어림잡아 500정도 나눔
            this.moveSpeed = swipeLength / 500f;
            Debug.LogFormat("moveSpeed: {0}", moveSpeed);

            //오디오 실행
            this.PlayMoveSound();
        }

        this.transform.Translate(this.moveSpeed, 0, 0);
        //감쇠 , 점점 감소 -> 0.00x 0과 비슷해짐 
        this.moveSpeed *= this.dampingCoefficient;

    }

    public void PlayLoseSound()
    {
     //   AudioSource audio = this.GetComponent<AudioSource>();
        AudioClip clip = this.audioClips[1];
        GetComponent<AudioSource>().PlayOneShot(clip);

    }
    public void PlayMoveSound()
    {
       // AudioSource audio = this.GetComponent<AudioSource>();
        AudioClip clip = this.audioClips[0];
        GetComponent<AudioSource>().PlayOneShot(clip);
    }
}

GameDirector

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

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 (Text)
        this.distanceGo = GameObject.Find("Distance");

        Debug.LogFormat("this.carGo{0}", this.carGo);
        Debug.LogFormat("this.flagGo{0}", this.flagGo);
        Debug.LogFormat("this.distanceGo{0}", this.distanceGo);

    }
    private bool isGameOver = false;
    // Update is called once per frame
    void Update()
    {
        //매프레임마다 자동차와 깃발의 거리를 계산해서 UI에 출력해야 함

        //테스트 
        float distanceX = this.flagGo.transform.position.x - this.carGo.transform.position.x;
        Debug.LogFormat("distance: {0}", distanceX);
        Text text = distanceGo.GetComponent<Text>();
        if (distanceX >= 0)
        {
            text.text = string.Format("목표 지점까지의 거리 {0:0.00}m", distanceX);
            
        }
        else
        {
            if (this.isGameOver == false)
            {
                text.text = string.Format("게임 오버");
                CarController carcontroller = this.carGo.GetComponent<CarController>();
                carcontroller.PlayLoseSound();
                this.isGameOver = true;
            }
        }


    }
}

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

구름 오르기  (0) 2023.08.02
고양이 화살 피하기 게임  (0) 2023.08.02
2023/08/01 복습  (0) 2023.08.01
간단 룰렛  (0) 2023.08.01
Swipe Car && 수리검 던지기  (0) 2023.08.01