코로나도 이제 조금씩은 진정되고 있는 오늘
유니티로 감자를 자라게 해보겠습니다.
우선 영상을 보겠습니다.
<참고>
<window 10 동영상 찍은 방법>
win + G을 누르면 윈도 화면을 찍을 수 있는 툴이 나옵니다. 그것을 이용해
영상을 촬영했습니다. 그리고 밑의 편집기를 이용해 용량을 줄였습니다. 용량이 21메가에서 0.22로 줄었습니다.
용량이 98 퍼나 줄어드네요
https://www.videosmaller.com/ko/
우선,첫 번째로 유니티의 hierarchy 창을 보겠습니다.
potatos란 감자들의 집합이고
potato_번호 가 감자 객체입니다.
그 안에 있는 potato_25, potato_45, potato_90 은 감자의 형태입니다.
뒤의 숫자는 감자를 심고 지난날입니다.
감자 집합(potatos)에는 Check_Today라는 스크립트를 사용합니다.
위의 스크립트(Check_Today) 특징으로 Today라는 변수를 static을 사용하여 프로그램 초기부터 객체가 생성되게 하였고
public을 사용하여 외부 모듈들도 위의 변수를 참조할 수 있게 하였습니다.
Today 변수는 모든 감자들의 성장에 영향을 미칩니다.
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
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class check_Today : MonoBehaviour
{
public static int Today;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Today += 5;
KeyDown_Space();
}
}
private void KeyDown_Space()
{
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
다음으로 감자 객체(potato_01, ... , potato_06)에 Grow_up_potato라는 스크립트를 사용했습니다.
위 스크립트는 Check_Today.Today의 변수 값에 따라서 식물을 자라게 만드는 스크립트입니다.
하나의 감자 객체는 25일 된 날 감자, 45일 된날 감자, 90일 된날 감자가 들어있습니다.
초기에는 45, 90일 된 감자들은 비활성화하여 보이지 않게 하였습니다.
그리고 today값이 45가 되기 전까지는 25일 된 날 감자 크기를 키워주며
45일이 되면 45일 된 감자 형태를 활성화하고 25일 된 감자를 비활성화합니다.
이후 90일이 되기 전까지 이번에는 y축을 조금씩 성장시킵니다.
그리고 90일이 되면 감자가 최종 성장 형태가 됩니다.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Grow_up_potato : MonoBehaviour
{
int today;
GameObject potato_25;
GameObject potato_45;
GameObject potato_90;
// Start is called before the first frame update
void Start()
{
today = 0;
potato_25 = transform.GetChild(0).gameObject;
potato_45 = transform.GetChild(1).gameObject;
potato_90 = transform.GetChild(2).gameObject;
}
// Update is called once per frame
void Update()
{
today = check_Today.Today;
growing_up(today);
}
void growing_up(int today)
{
//if (today < 20)
//{
// if (potato_25.activeSelf == true)
// potato_25.SetActive(false);
//}
if (today >= 0 && today < 45)
{
if (potato_25.activeSelf == false)
potato_25.SetActive(true);
float size = (float)today * 0.1f;
float size_y = (float)today * 0.2f;
potato_25.transform.localScale = new Vector3(size, size_y, size);
}
else if (today >= 45 && today < 90)
{
if (potato_25.activeSelf == true)
potato_25.SetActive(false);
if (potato_45.activeSelf == false)
potato_45.SetActive(true);
float size_y = ((float)today * 0.01f) + 0.3f;
potato_45.transform.localScale = new Vector3(1, size_y, 1);
}
else if (today >= 90)
{
// 여기서 potato_25의 상태를 비활성화 하지 않는 이유는
// 45~90 동안 이미 비활성화가 되었기 때문이다.
if (potato_45.activeSelf == true)
potato_45.SetActive(false);
if (potato_90.activeSelf == false)
potato_90.SetActive(true);
}
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
감자 식물은
현재 졸업 작품 준비중므로 공유할 수 없습니다.
'Unity3D' 카테고리의 다른 글
[Unity3D] 현재 진행상황을 알리기 위한 화살표 이동 (0) | 2020.07.16 |
---|---|
[Unity] 트리거 인식을 위한 조건, 버튼 마우스 클릭 반응을 위한 조건 (0) | 2020.06.19 |
Navigation 사용해서 npc 이동 후 비료주기 모션 보여주기 (0) | 2020.06.12 |
[unity]유니티 생명주기 중 OnEnable, 그리고 코루틴 (0) | 2020.05.21 |
[unity]lookAt 함수 x,z축으로만 보게 만들기 (0) | 2020.05.20 |