728x90
반응형
해적 고양이 만들기
- Lv.4 에서 해적고양이를 등장시킵니다! 준비하는 것은 튜터와 지금! 함께할께요 😎
- 해적고양이의 속성
- normalCat 보다 사이즈가 작음 scale: x:0.8, y:0.8
- normalCat 보다 빠르게 내려옴 -0.1f
- 해적고양이 준비하기 (튜터와 함께)
- normalCat 프리팹을 가져와서, 오른쪽 키 → unpack 합니다.
cat.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Cat : MonoBehaviour
{
public GameObject hungrycat;
public GameObject Fullcat;
public GameObject pirateCat;
public RectTransform front;
public int type;
float Full = 5.0f;
float energy = 0.0f;
float speed = 0.05f;
bool isFull = false;
// Start is called before the first frame update
void Start()
{
float x = Random.Range(-9.0f, 9.0f);
float y = 30.0f;
transform.position = new Vector2(x, y);
if(type ==1)
{
speed = 0.05f;
Full = 5f;
}
else if (type == 2)
{
speed = 0.02f;
Full= 10f;
}
else if (type == 3)
{
speed = 0.1f;
Full = 3f;
}
}
// Update is called once per frame
void Update()
{
if (energy < Full)
{
transform.position += Vector3.down * speed;
if(transform.position.y < -16.0f)
{
GameManager.Instance.GameOver();
}
}
else
{
if(transform.position.x > 0)
{
transform.position += Vector3.right * 0.05f;
}
else
{
transform.position += Vector3.left * 0.05f;
}
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.CompareTag("Food"))
{
Debug.Log(energy);
if(energy < Full)
{
energy += 1.0f;
front.localScale = new Vector3(energy / Full, 1.0f, 1.0f);
Destroy(collision.gameObject);
if(energy == 5.0f)
{
if(!isFull)
{
isFull = true;
hungrycat.SetActive(false);
Fullcat.SetActive(true);
Destroy(gameObject, 3.0f);
GameManager.Instance.AddScore();
}
}
}
}
}
}
GameManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
public GameObject normalCat;
public GameObject fatCat;
public GameObject pirateCat;
public GameObject retryBtn;
public RectTransform levelFront;
public Text levelTxt;
int level = 0;
int score = 0;
private void Awake()
{
if(Instance == null)
{
Instance = this;
}
Application.targetFrameRate = 60;
Time.timeScale = 1.0f;
}
// Start is called before the first frame update
void Start()
{
InvokeRepeating("MakeCat", 0f, 1f);
}
// Update is called once per frame
void Update()
{
}
void MakeCat()
{
Instantiate(normalCat);
// lv.2 20% 확률로 고양이를 더 생성해준다.
if(level == 1)
{
int p = Random.Range(0, 10);
if(p < 2) Instantiate(normalCat);
}
else if(level == 2)
{
// lv.2 50% 확률로 고양이를 더 생성해준다.
int p = Random.Range(0, 10);
if(p < 5) Instantiate(normalCat);
}
else if(level ==3)
{
// lv.3 뚱뚱한 고양이를 생성해준다.
Instantiate(fatCat);
}
else if (level >= 4)
{
float p = Random.Range(0, 10);
if (p < 5) Instantiate(normalCat);
Instantiate(fatCat);
Instantiate(pirateCat);
}
}
public void GameOver()
{
retryBtn.SetActive(true);
Time.timeScale = 0f;
}
public void AddScore()
{
score++;
level = score / 5;
levelTxt.text = level.ToString();
levelFront.localScale = new Vector3((score - level * 5) / 3.0f, 1f, 1f);
}
}
728x90
반응형
'게임 개발 수업' 카테고리의 다른 글
유니티로 만드는 게임개발 종합반 2주차 (0) | 2024.07.29 |
---|---|
개발 용어 정리 (중학생도 알아들을 수 있을정도로) (0) | 2024.07.17 |
게임 서버 트랙에서 자바스크립트를 학습하는 이유 (0) | 2024.07.16 |
자바 스크립트 알아보기 (0) | 2024.07.15 |
생활 코딩 HTML&internet (0) | 2024.07.12 |