반응형
특정 오브젝트에 주인공 유닛이 충돌하였을때 게임을 중지시킬 수 있다.
게임을 중지 시킬때 중요한 코드는 하기와 같다.
게임 역시 영화처럼 시간 개념이 있기때문에 Time.timescale = 0 으로 하면 게임씬이 정지하게 된다.
반대로 Time.timescale=1 이면 정상적인 속도로 시간이 움직인다.
Time.timescale = 2 하면 그럼 어떻게 될까? 그렇다 2배속으로 빨리 재생이 되어진다.
유니티에서 게임은 영화의 한씬처럼 생각하면 된다.
지난 시간에 이어 소방차를 활용해보자.
특정 블럭에 충돌되면 멈추어서게된다. 하기 처럼 말이다.
지난 시간과 동일하게
블럭 과 자동차에 동일 컴포넌트를 적용하고 하기 처럼 코드를 작성한다.
이 코드는 자동차가 특정 블럭에 충돌시 게임을 정지하는 효과를 가져다 준다.
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 System.Collections.Generic;
using UnityEngine;
public class MoveOnRightLeft : MonoBehaviour
{
public float speed = 1;
Rigidbody2D rbody;
public string targetObject;
// Start is called before the first frame update
void Start()
{
// 게임 시작.
Time.timeScale = 2;
rbody = GetComponent<Rigidbody2D>();
// 소스상에서 중력 무시 및 Z축 회전 방지를 한다
rbody.gravityScale = 0;
rbody.constraints = RigidbodyConstraints2D.FreezeRotation;
}
// Update is called once per frame
void FixedUpdate()
{
// 물리엔진의 속도로 X축으로 이동
rbody.velocity = new Vector2(speed, 0);
}
private void OnCollisionEnter2D(Collision2D collision)
{
// 충돌오브젝트가 타겟 오브젝트라면.. 게임을 중지
if(collision.gameObject.name == targetObject)
{
Time.timeScale = 0;
}
// 충돌시 방향을 바꾼다.
speed = -speed;
this.GetComponent<SpriteRenderer>().flipX = (speed < 0);
}
}
|
cs |
OnCollisionEnter2D 함수에서 게임을 중지하기 위한 하기 코드가 중요하다.
// 충돌오브젝트가 타겟 오브젝트라면.. 게임을 중지
if(collision.gameObject.name == targetObject)
{
Time.timeScale = 0;
}
유니티 게임은 마치 영화의 씬과 같이 동작한다는 것이 주요하다
감사합니다.
반응형
'앱 만들기 > 유니티2D 게임 만드는 방법' 카테고리의 다른 글
유니티-화면 전환하기 (2) | 2021.06.19 |
---|---|
유니티-충돌시 오브젝트 사라지게 하기 (2) | 2021.06.17 |
유니티-충돌 처리 하기(1) 방향 전환 (1) | 2021.06.15 |
유니티-유도탄 구현해보기. (2) | 2021.06.13 |
유니티-키보드로 오브젝트 움직이기(2) (2) | 2021.06.06 |
댓글