Unity/수업내용
Unity 21.04.07.수업내용
HappyFrog
2021. 4. 7. 09:37
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameDirector : MonoBehaviour
{
GameObject generator;
GameObject timerText;
GameObject pointText;
float time = 30.0f;
int point = 0;
public void GetApple()
{
this.point += 100;
}
public void GetBomb()
{
this.point -= 150;
}
// Start is called before the first frame update
void Start()
{
this.timerText = GameObject.Find("Time");
this.pointText = GameObject.Find("Point");
this.generator = GameObject.Find("ItemGenerator");
}
// Update is called once per frame
void Update()
{
this.time -= Time.deltaTime;
if(this.time < 0)
{
this.time = 0;
this.generator.GetComponent<ItemGenerator>().SetParameter(10000.0f, 0, 0);
}
else if(0 <= this.time && this.time < 5)
{
this.generator.GetComponent<ItemGenerator>().SetParameter(0.9f, -0.04f, 3);
}
else if(5<=this.time && this.time < 15)
{
this.generator.GetComponent<ItemGenerator>().SetParameter(0.8f, -0.05f, 5);
}
else if(15 <=this.time && this.time < 25)
{
this.generator.GetComponent<ItemGenerator>().SetParameter(0.65f, -0.06f, 7);
}
else if(25<=this.time && this.time < 30)
{
this.generator.GetComponent<ItemGenerator>().SetParameter(0.85f, -0.04f, 4);
}
this.timerText.GetComponent<Text>().text = this.time.ToString("F1");
this.pointText.GetComponent<Text>().text = this.point.ToString() + "point";
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ItemGenerator : MonoBehaviour
{
public GameObject applePrefab;
public GameObject bombPrefab;
float span = 1.5f;
float delta;
public int ratio;
float speed = -0.03f;
public void SetParameter(float span, float speed, int ratio)
{
this.span = span;
this.speed = speed;
this.ratio = ratio;
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
this.delta += Time.deltaTime;
if (this.delta > this.span)
{
this.delta = 0;
GameObject item;
int dice = Random.Range(1, 11);
if(dice <= this.ratio)
{
item = Instantiate(bombPrefab) as GameObject;
}
else
{
item = Instantiate(applePrefab) as GameObject;
}
float x = Random.Range(-1, 2);
float z = Random.Range(-1, 2);
item.transform.position = new Vector3(x, 4, z);
item.GetComponent<ItemController>().dropSpeed = this.speed;
}
/*if (this.delta > 2.0f)
{
Instantiate(bombPrefab);
this.delta = 0;
}*/
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ItemController : MonoBehaviour
{
public float dropSpeed = -0.03f;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.Translate(0, this.dropSpeed, 0);
if(transform.position.y < -1.0f)
{
if (this.gameObject.tag == "Apple")
Debug.LogFormat("Fail to catching {0} :(", this.gameObject.tag);
else
Debug.LogFormat("Nice dodge :D");
Destroy(gameObject);
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BasketController : MonoBehaviour
{
GameObject director;
public AudioClip appleSE;
public AudioClip bombSE;
AudioSource aud;
// Start is called before the first frame update
void Start()
{
this.director = GameObject.Find("GameDirector");
this.aud = GetComponent<AudioSource>();
}
private void OnTriggerEnter(Collider other)
{
if(other.gameObject.tag == "Apple")
{
this.director.GetComponent<GameDirector>().GetApple();
Debug.LogFormat("Success to catching {0}! :D", other.gameObject.tag);
this.aud.PlayOneShot(this.appleSE);
}
else
{
this.director.GetComponent<GameDirector>().GetBomb();
Debug.LogFormat("That's the one we shouldn't catch, bruh. :(", other.gameObject.tag);
this.aud.PlayOneShot(this.bombSE);
}
Destroy(other.gameObject);
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
Debug.DrawRay(ray.origin, ray.direction * 1000, Color.red, 1);
if(Physics.Raycast(ray,out hit, Mathf.Infinity))
{
float x = Mathf.RoundToInt(hit.point.x);
float z = Mathf.RoundToInt(hit.point.z);
transform.position = new Vector3(x, 0, z);
}
}
}
}