본문 바로가기

유니티2D

GameOver 기본 코드

GameManager.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System.Collections;
using UnityEngine;
 
public class GameManager : MonoBehaviour
{
    private static GameManager _instance;
    public static GameManager Instance
    {
        get
        {
            if (_instance == null)
            {
                _instance = FindObjectOfType<GameManager>();
            }
            return _instance;
        }
    }
 
    public GameObject poop;
    public Transform objbox;
 
    void Start()
    {
        StartCoroutine(CreatepoopRoutine());
    }
 
    IEnumerator CreatepoopRoutine()
    {
        while (true)
        {
            CreatePoop();
            yield return new WaitForSeconds(0.3f);
        }
    }
 
    private void CreatePoop()
    {
        Vector3 pos = Camera.main.ViewportToWorldPoint(new Vector3(UnityEngine.Random.Range(0.0f, 1.0f), 1.1f, 5.0f));
        GameObject obj = Instantiate(poop, pos, Quaternion.identity);
        obj.transform.parent = objbox.transform;
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

Player.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using UnityEngine;
 
public class Player : MonoBehaviour
{
    private Rigidbody2D rigidbody;
    private SpriteRenderer renderer;
    private float speed = 3;
 
    void Start()
    {
        rigidbody = GetComponent<Rigidbody2D>();
        renderer = GetComponent<SpriteRenderer>();
    }
 
    void FixedUpdate()
    {        
        PlayerMove();
        ScreenChk();
    }
 
    private void PlayerMove()
    {
        float horizontal = Input.GetAxis("Horizontal");
        if (horizontal < 0)
        {
            renderer.flipX = true;
        }
        else if (horizontal > 0)
        {
            renderer.flipX = false;
        }
        rigidbody.velocity = new Vector2(horizontal * speed, rigidbody.velocity.y);
    }
    private void ScreenChk()
    {
        Vector3 worlpos = Camera.main.WorldToViewportPoint(this.transform.position);
        if (worlpos.x < 0.05f) worlpos.x = 0.05f;
        if (worlpos.x > 0.95f) worlpos.x = 0.95f;
        this.transform.position = Camera.main.ViewportToWorldPoint(worlpos);
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

poop.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using UnityEngine;
 
public class poop : MonoBehaviour {
 
    private Rigidbody2D rigidbody;
 
    void Start () {
        rigidbody = GetComponent<Rigidbody2D>();
    }
    
    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "Ground" || collision.gameObject.tag == "Player")
        {
            Destroy(gameObject);
        }
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

 

[유니티] GameOver!

게임이 끝나고 재시작하는 법을 간단하게 구현했습니다. 작업하는 프로젝트에 따라서 다양하게 변경될 수 있으니 참고 정도만 하시면 될 것 같습니다. 기초적인 부분으로 참고하시길 바랍니다. 잘못된 점이나 조언, 충고는 언제나 환영입니다. 혹시 영상의 설명이 빠르다면 재생속도를 낮춰보세요!! #유니티 #GameDev #게임만들기

www.youtube.com