
마지막 강의에 retry 함수 판넬에 적용하기 전까지만 해도 잘 작동 되다가.. 갑자기 흡수가 안되네요..
나머지 기능들은 다 잘 작동하는데..
바닥 충돌시 사라지는건 작동을해서 rain script에 콜리전 함수는 작동하고있는것같은데..
if (coll.gameObject.tag == "rtan")
{
GameManager.I.addScore(score);
Destroy(gameObject);
}
이 부분이 왜 갑자기 작동 안하는지 잘 모르겠습니다 .
// rain script
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using UnityEngine;
public class rain : MonoBehaviour
{
// Start is called before the first frame update
int type;
float size;
int score;
// Start is called before the first frame update
void Start()
{
float x = Random.Range(-2.7f, 2.7f);
float y = Random.Range(3.0f, 5.0f);
transform.position = new Vector3(x, y, 0);
type = Random.Range(1, 4);
if (type == 1)
{
size = 1.2f;
score = 3;
GetComponent<SpriteRenderer>().color = new Color(100 / 255f, 100 / 255f, 255 / 255f, 255 / 255f);
}
else if (type == 2)
{
size = 1.0f;
score = 2;
GetComponent<SpriteRenderer>().color = new Color(130 / 255f, 130 / 255f, 255 / 255f, 255 / 255f);
}
else
{
size = 0.8f;
score = 1;
GetComponent<SpriteRenderer>().color = new Color(150 / 255f, 150 / 255f, 255 / 255f, 255 / 255f);
}
transform.localScale = new Vector3(size, size, 0);
}
// Update is called once per frame
void Update()
{
}
void OnCollisionEnter2D(Collision2D coll)
{
if (coll.gameObject.tag == "ground")
{
Destroy(gameObject);
}
if (coll.gameObject.tag == "rtan")
{
GameManager.I.addScore(score);
Destroy(gameObject);
}
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------
// GameManager script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class GameManager : MonoBehaviour
{
public GameObject rain;
public static GameManager I;
public Text ScoreText;
public Text TimeText;
public GameObject panel;
int totalScore;
float limit = 5f;
void Awake()
{
I = this;
}
// Start is called before the first frame update
void Start()
{
InvokeRepeating("makeRain", 0, 0.5f);
initGame();
}
void initGame()
{
Time.timeScale = 1.0f;
totalScore = 0;
limit = 5f;
}
// Update is called once per frame
void Update()
{
limit -= Time.deltaTime;
if (limit < 0)
{
limit = 0.0f;
panel.SetActive(true);
Time.timeScale = 0.0f;
}
TimeText.text = limit.ToString("N2");
}
void makeRain()
{
Instantiate(rain);
}
public void addScore(int score)
{
totalScore += score;
ScoreText.text = totalScore.ToString();
}
public void retry()
{
SceneManager.LoadScene("MainScene");
}
}
