4강 전체 코드 - 가위바위보 게임 - 클릭게임

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class GameMag : MonoBehaviour
{
// 특정 게임 오브젝트에 SpriteRenderer 컴포넌트를 연결할 변수 선언.
// SpriteRenderer 는 하나의 클래스 데이터 형.
// 인스펙터 뷰 오브젝트 연결 할 수 있도록 함 ( 스프라이트 렌더러에 바로 연결 )
// 게임 오브젝트의 SpriteRenderer 컴포넌트가 연결된다.
public SpriteRenderer KBBImage;
public SpriteRenderer KawiImage;
public SpriteRenderer BawiImage;
public SpriteRenderer BoImage;
public Text resultText; // 텍스트 게임오브젝트 연결할 변수 설정.
//public SpriteRenderer KBBImageShadow;
// sprite kbbimages[3] <- c++ 스프라이트 이미지관리
// 프로젝트 창의 이미지 인스펙터 창 안쪽 객체 배열로 연결.
// 이미지 파일을 메모리 상으로 올리기 위해...
public Sprite[] kbbimages;
//public Sprite[] kbbimagesShadow; // -> 쉐도우 설정
public bool isStart = false; // 이미지 반복 판정
void Start() { }
void Update() { }
public void OnGameStartBtnClick() //게임 스타트 버튼 클릭
{
Debug.Log("게임 스타트 버튼 클릭");
// 이미 게임 시작 중이면 실행 하지 않음
if (isStart) return;
// 게임 시작 설정(이미지 반복)
isStart = true;
// 가위바위보 타이머 설정
StartCoroutine("KBBTimer");
}
public void OnKawiBtnClick() //가위버튼 클릭
{
KawiImage.color = Color.white;
isStart = false;
playerKBB = 0;
GameResult();
}
public void OnBawiBtnClick() //바위버튼 클릭
{
isStart = false;
playerKBB = 1;
GameResult();
}
public void OnBoBtnClick() //보버튼 클릭
{
isStart = false;
playerKBB = 2;
GameResult();
}
// 이미지 로테이션
public int imageNumber = 0; // 이미지 카운트 변수 생성
IEnumerator KBBTimer() // 함수
{
//반복
while (isStart)
{
//가위 바위 보 이미지 변경
KBBImage.sprite = kbbimages[imageNumber++];
//KBBImageShadow.sprite = kbbimagesShadow[imageNumber++];
yield return new WaitForSeconds(0.1f); // 0.5초간 대기
// 배열의 인덱스 변경
if (imageNumber >= 3) imageNumber = 0;
}
}
//가위 바위 보
public int comKBB = 0;
public int playerKBB = 0;
public void GameResult()
{
comKBB = Random.Range(0, 3);
// 컴퓨터 가위바위보 랜덤하게 추출한 값 대입
KBBImage.sprite = kbbimages[comKBB];
Debug.Log("컴퓨터 : " +comKBB);
Debug.Log("플레이어 : " + playerKBB);
// 가위바위보 판정코드
if (comKBB == playerKBB)
{
resultText.text = "DRAW!";
Debug.Log("컴퓨터와 플레이어 무승부");
}
else if ((playerKBB == 0 && comKBB == 2) ||
(playerKBB == 1 && comKBB == 0) ||
(playerKBB == 2 && comKBB == 1))
{
resultText.text = "YOU WIN!";
Debug.Log("플레이어 승!");
}
else
{
resultText.text = "YOU LOSE!";
Debug.Log("플레이어 패배!"); ;
}
}
}
===============================================================================================
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class CPinkMon : MonoBehaviour {
// 오브젝트 위치 배열 변수 생성.
public Transform[] positions;
public Text countText;
int score = 0;
// Use this for initialization
void Start () {
//시작할때 positions 0 번 위치로 이동.
gameObject.transform.position = positions[0].position;
//MoveTimer()함수 코루틴 실행.
StartCoroutine("MoveTimer");
}
IEnumerator MoveTimer()
{
while (true)
{
yield return new WaitForSeconds(0.5f);
int postNum = Random.Range(0, 6);
transform.position = positions[postNum].position;
}
}
//박스콜라이더를 가진 오브젝트의 터치, 클릭 이벤트를 받는 함수.
void OnMouseDown()
{
score++;
countText.text = score.ToString();
StartCoroutine("ClickColorChange");
}
IEnumerator ClickColorChange()
{
// 반투명한 붉은색 으로 스프라이트 변경함
GetComponent<SpriteRenderer>().material.color =
new Color(1f, 0.5f, 0.5f, 0.5f);
//0.8ㅊ 동안 색상 유지.
yield return new WaitForSeconds(0.08f);
// 색상복원
GetComponent<SpriteRenderer>().material.color = new Color(1f, 1f, 1f, 1f);
}
// Update is called once per frame
void Update () {
}
}

댓글

이 블로그의 인기 게시물

날짜 시간 시간차 시간 계산 하기

코루틴에서 CallBack 함수 적용하기

C++ 언어 퍼센트 구하는 방법 / 기본 언어 퍼센트 구하는 방법