아카이브
8/1 유니티 복습 본문
스와이프해서 자동차 이동
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 |