오캠 - 움짤도 있음
그림 파일 -
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CarController : MonoBehaviour
{
public int rotAngle = 0;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//마우스 왼쪽 버튼을 눌렀다면
if(Input.GetMouseButtonDown(0))
{
Debug.Log("왼쪽 버튼 클릭");
//원점으로 게임오브젝트를 이동하자
Debug.Log(this); //CarController클래스의 인스턴스
Debug.Log(this.gameObject); // CarController컴포넌트가 붙어있는 게임오브젝트 car 인스턴스
//이동하자 : 위치 변경
//위치 : 게임오브젝트 멤버 Transform 멤버 Position 멤버 x, y, z
//원점 : 0, 0, 0
this.gameObject.transform.position = new Vector3(0, 0, 0);
//this.gameObject.transform.position.x = 0;
//구조체멤버 싱글로 할당 불가 , 반드시 모두 채워져야한다 (x값만 지정 불가)
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CarController : MonoBehaviour
{
public int rotAngle = 0;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//마우스 왼쪽 버튼을 눌렀다면
if(Input.GetMouseButtonDown(0))
{
Debug.Log("왼쪽 버튼 클릭");
//이동
//벡터
//이동벡터 : 위치
//물리벡터 : 크기와 방향
//성분 Vector3(x, y, z)
// Vector3 연산
Vector3 a = new Vector3(0, 0, 0);
Vector3 b = new Vector3(1, 0, 0);
Vector3 c = a + b;
// 1, 0, 0
this.gameObject.transform.position
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CarController : MonoBehaviour
{
public int rotAngle = 0;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//마우스 왼쪽 버튼을 눌렀다면
if(Input.GetMouseButtonDown(0))
{
Debug.Log("왼쪽 버튼 클릭");
//이동한다 x축으로 1만큼
//this.gameObject.transform.position += new Vector3(1, 0, 0);
//this.gameObject.transform.Translate(1, 0, 0);
//this.gameObject.transform;
//거속시
this.transform.Translate(-1, 0, 0);
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CarController : MonoBehaviour
{
float moveSpeed = 0;
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))
{
Debug.Log("왼쪽 버튼 클릭");
this.moveSpeed += 0.2f;
//이동한다 x축으로 1만큼
//this.gameObject.transform.position += new Vector3(1, 0, 0);
//this.gameObject.transform.Translate(1, 0, 0);
//this.gameObject.transform;
//거속시
}
//메 프레임마다 1유닛씩 x축으로 이동
this.transform.Translate(this.moveSpeed, 0, 0);
//감쇠한다 ,, 멈춘것처럼보인다.
this.moveSpeed *= dampingCoefficient;
}
}
Translate : 현재 좌표에 상대적인 이동 값을 나타낸다
나의 좌표에 인수로 전달되는 x, y, z의 값을 더한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CarController : MonoBehaviour
{
float moveSpeed = 0;
float dampingCoefficient = 0.96f; //감쇠계수
private Vector3 startPos; //down 위치
private Vector3 endPos; //up위치
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//마우스 왼쪽 버튼을 눌렀다면
if (Input.GetMouseButtonDown(0))
{
Debug.LogFormat("Down: {0}", startPos); //A
startPos = Input.mousePosition;
}
else if (Input.GetMouseButtonUp(0)) //왼쪽 버튼을 떼었다면
{
Debug.LogFormat("Up: {0}", endPos); //B
endPos = Input.mousePosition;
//B.x - A.x = x좌표의 거리
float swipeLength = endPos.x - startPos.x;
Debug.LogFormat("swipeLength: {0}", swipeLength); //화면좌표에서 두점사이의 거리
//화면좌표계에서의 두점사이의 거리에 비례해서 이동 , 좌표계가 안맞아서 어림잡아 500정도 나눠줬다.
this.moveSpeed = swipeLength / 500f;
Debug.LogFormat("moveSpeed: {0}", moveSpeed);
}
//x축으로 moveSpeed만큼 매 프레임마다 이동 (Self: 로컬좌표계)
this.transform.Translate(this.moveSpeed, 0, 0);
//감쇠 매 프레임마다 0.95f를 moveSpeed에 곱해서 적용
this.moveSpeed *= this.dampingCoefficient;
}
}
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);
}
// Update is called once per frame
void Update()
{
//매프레임마다 자동차와 깃발의 거리를 계산해서 UI에 출력해야 함
//테스트
float distanceX = this.flagGo.transform.position.x - this.carGo.transform.position.x;
//Debug.LogFormat("distanceX: {0}", distanceX); //월드 좌표계
Text text = this.distanceGo.GetComponent<Text>();
text.text = string.Format("목표지점까지의 거리 : {0:0.00}m", distanceX);
if (distanceX <= flagGo.transform.position.z)
{
text.text = string.Format("게임오버");
}
}
}
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 위치
private Vector3 endPos; //up위치
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.LogFormat("Down: {0}", startPos); //A
startPos = Input.mousePosition;
}
else if (Input.GetMouseButtonUp(0)) //왼쪽 버튼을 떼었다면
{
Debug.LogFormat("Up: {0}", endPos); //B
endPos = Input.mousePosition;
//B.x - A.x = x좌표의 거리
float swipeLength = endPos.x - startPos.x;
Debug.LogFormat("swipeLength: {0}", swipeLength); //화면좌표에서 두점사이의 거리
//화면좌표계에서의 두점사이의 거리에 비례해서 이동 , 좌표계가 안맞아서 어림잡아 500정도 나눠줬다.
this.moveSpeed = swipeLength / 500f;
Debug.LogFormat("moveSpeed: {0}", moveSpeed);
this.PlayMoveSound();
}
//x축으로 moveSpeed만큼 매 프레임마다 이동 (Self: 로컬좌표계)
this.transform.Translate(this.moveSpeed, 0, 0);
//감쇠 매 프레임마다 0.95f를 moveSpeed에 곱해서 적용
this.moveSpeed *= this.dampingCoefficient;
}
public void PlayLoseSound()
{
//오디오 실행
AudioSource audio = this.gameObject.GetComponent<AudioSource>();
//audio.Play();
AudioClip clip = this.audioClips[1];
audio.PlayOneShot(clip);
}
public void PlayMoveSound()
{
//오디오 실행
AudioSource audio = this.gameObject.GetComponent<AudioSource>();
//audio.Play();
AudioClip clip = this.audioClips[0];
audio.PlayOneShot(clip);
}
}
ShurikenController
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ShurikenController : MonoBehaviour
{
public float moveSpeed = 0f;
public float dampingCoeffient = 0.96f;
private Vector3 startPos;
private Vector3 endPos;
public float rotSpeed = 10f;
// Start is called before the first frame update
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;
//거리
float swipeLength = endPos.y - startPos.y;
Debug.LogFormat("swipeLength: {0}", swipeLength);
//this.moveSpeed = swipeLength / 500f;
this.moveSpeed = 1;
Debug.LogFormat("moveSpeed: {0}", moveSpeed);
}
transform.Translate(0, this.moveSpeed, 0, Space.World);
// 속도 * 시간
transform.Rotate(0, 0, rotSpeed);
}
}
GameDirector
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameDirector : MonoBehaviour
{
GameObject carGo;
GameObject flagGo;
GameObject distanceGo;
private bool isGameOver = false;
// 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);
}
// Update is called once per frame
void Update()
{
//매프레임마다 자동차와 깃발의 거리를 계산해서 UI에 출력해야 함
//테스트
float distanceX = this.flagGo.transform.position.x - this.carGo.transform.position.x;
//Debug.LogFormat("distanceX: {0}", distanceX); //월드 좌표계
Text text = this.distanceGo.GetComponent<Text>();
if (distanceX >= flagGo.transform.position.z)
{
text.text = string.Format("목표지점까지의 거리 : {0:0.00}m", distanceX);
}
else
{
if (isGameOver == false)
{
text.text = string.Format("게임오버");
CarController carController = this.carGo.GetComponent<CarController>();
carController.PlayLoseSound();
isGameOver = true;
}
}
}
}
'유니티 기초' 카테고리의 다른 글
pixel_sword (0) | 2023.08.03 |
---|---|
챕터6 고양이 점프[점프막기, 카메라 아래 최소치 정하기 미완] (0) | 2023.08.02 |
챕터5 고양이탈출 - Prefab (0) | 2023.08.02 |
챕터5 고양이탈출 (0) | 2023.08.01 |
유니티 (0) | 2023.07.31 |