728x90
1. Roulette
마우스 클릭 (왼쪽버튼)으로 룰렛 회전 후 서서히 감속시켜 멈추게하기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RouletteController : MonoBehaviour
{
public float rotAngle = 0; //회전속도
public float dampingCoefficient = 0.96f; //감쇠계수 설정
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
this.rotAngle = 10; //마우스를 누르면 속도 10으로 회전
}
this.transform.Rotate(0, 0, this.rotAngle);
//감쇠계수 곱하기
this.rotAngle *= dampingCoefficient;
Debug.Log(rotAngle);
}
}
2. CarSwipe
마우스를 끈 거리만큼 차 이동후 서서히 감속시켜 멈추게 하기
깃발까지의 차 이동거리 나타내기
1) 클릭하면 단순히 차를 이동시키고 서서히 멈추게 하기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CarController : MonoBehaviour
{
public float carSpeed = 0; //맨 처음 차 속도
public float dampingCoefficient = 0.98f; //감쇠계수 설정
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0)) //마우스를 클릭하면
{
this.carSpeed = 0.2f; //차 속도 설정
}
transform.Translate(this.carSpeed, 0, 0); // x축으로 설정한 속도만큼 차 이동
this.carSpeed *= dampingCoefficient;
}
}
2) 남은거리 표시 및 게임오버 나타내기
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");
this.distanceGo = GameObject.Find("Distance");
Debug.LogFormat("{0}", distanceGo);
Debug.LogFormat("{0}", carGo);
Debug.LogFormat("{0}", flagGo);
}
// Update is called once per frame
void Update()
{
//차와 깃발(게임오브젝트) 사이의 거리
//게임오브젝트의 좌표 : 게임오브젝트이름.transform.position
float distanceX = this.flagGo.transform.position.x - this.carGo.transform.position.x;
Debug.LogFormat("distanceX : {0}", distanceX);
//UI에 나타내기(게임오버 추가)
Text text = distanceGo.GetComponent<Text>();
text.text = string.Format("목표 지점까지 거리 : {0:0.00}m", distanceX);
if (distanceX < 0)
{
text.text = string.Format("Game Over");
}
}
}
3) 오디오 소리내기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CarController : MonoBehaviour
{
public float carSpeed = 0; //맨 처음 차 속도
public float dampingCoefficient = 0.96f; //감쇠계수 설정
private Vector3 startPos;
public AudioClip[] audioClips;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0)) //마우스를 클릭하면
{
Debug.Log("down");
this.startPos = Input.mousePosition; //마우스 클릭했을 때의 위치
}
else if (Input.GetMouseButtonUp(0))
{
Debug.Log("up");
Vector3 endPos = Input.mousePosition; //마우스를 떼었을 때의 위치
//화면좌표에서 두 점사이의 거리
float swipeLength = endPos.x - startPos.x;
Debug.LogFormat("swipeLength : {0}", swipeLength);
//스와이프 길이 -> 차 속도로 변경 (500은 이동좌표계가 안 맞아 임의로 나눠줌)
this.carSpeed = swipeLength / 500f;
Debug.LogFormat("carSpeed : {0}", carSpeed);
//오디오 실행
PlayMoveSound();
}
this.transform.Translate(this.carSpeed, 0, 0); // 매프레임마다 설정한 속도만큼 차 이동
this.carSpeed *= dampingCoefficient; //감속
}
//움직일때 오디오 재생 메서드
public void PlayMoveSound()
{
AudioClip clip = this.audioClips[0];
GetComponent<AudioSource>().PlayOneShot(clip); //한 번만 재생
}
//게임오버 오디오 재생 메서드
public void PlayLoseSound()
{
AudioClip clip = this.audioClips[1];
GetComponent<AudioSource>().PlayOneShot(clip); //한 번만 재생
}
}
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");
this.distanceGo = GameObject.Find("Distance");
Debug.LogFormat("{0}", distanceGo);
Debug.LogFormat("{0}", carGo);
Debug.LogFormat("{0}", flagGo);
}
private bool isGameOver = false;
// Update is called once per frame
void Update()
{
//차와 깃발(게임오브젝트) 사이의 거리 계산해서 UI에 표시
//게임오브젝트의 좌표 : 게임오브젝트이름.transform.position
float distanceX = this.flagGo.transform.position.x - this.carGo.transform.position.x;
Debug.LogFormat("distanceX : {0}", distanceX);
Text text = distanceGo.GetComponent<Text>();
text.text = string.Format("목표 지점까지 거리 : {0:0.00}m", distanceX);
if (distanceX < 0)
{
if(this.isGameOver == false)
{
CarController carController = this.carGo.GetComponent<CarController>();
carController.PlayLoseSound();
this.isGameOver = true;
}
text.text = string.Format("Game Over");
}
}
}
'KDT > 유니티 기초' 카테고리의 다른 글
23/08/06 [주말과제] 캐릭터 위치 이동 및 몬스터 공격(수정) (1) | 2023.08.06 |
---|---|
23/08/06 유니티 기초 복습(CatEscape, Bamsongi) (0) | 2023.08.06 |
23/08/04 유니티짱 대각선으로 이동 (0) | 2023.08.04 |
23/08/04 유니티짱 직선으로 움직이기 (0) | 2023.08.04 |
23/08/03 애니메이션 방향 전환 및 점프 연습 (0) | 2023.08.03 |