[개발일지] 나폴리탄스파게티 20230530
2023. 6. 9. 17:31ㆍ2학년 1학기 프로젝트

게임상의 시간 구현
실제 3초가 게임상 시간으로는 1분
이를 UI통해 나타냄
public class TimeController : MonoBehaviour
{
float gameTime = 3.0f; // 게임상의 시간을 계산 (실제 3초 = 게임속 1분)
float updateTime = 0.0f; //게임상 시간을 계산하기 위해 실제 시간 데이터를 담은 변수
public int timeHour = 00; //분
public int timeMinute = 00; //초
public Text timeText; //시간을 나타내는 Text UI변수
void Start()
{
// 시작시 시각 00:00
timeText.text = (timeHour.ToString("00") +" : "+ timeMinute.ToString("00"));
}
void Update()
{
// 시간 계산 및 Text UI로 띄우기
if(updateTime > gameTime) // 3초가 지나면 1분을 더함
{
updateTime = 0.0f;
timeMinute ++;
if(timeMinute > 59) // 60분이 지나면 1시간을 더함
{
timeHour ++;
timeMinute = 0;
}
// 00:00형태로 시간을 나타냄
timeText.text = (timeHour.ToString("00") +" : "+ timeMinute.ToString("00"));
}
else
{
updateTime += Time.deltaTime;
}
}
}
조각상 구현
콜라이더를 사용해 특정 범위 내에 플레이어가 인식될 경우 플레이어를 바라봄
public class Statue : MonoBehaviour
{
public GameObject playerObject; //PlayerObject
Transform playerTransform; //PlayerObject의 위치 정보를 담을 변수
Vector3 target; //조각상이 바라볼 Vector3정보를 담을 변수
void Start()
{
playerTransform = playerObject.transform;
}
// 조각상이 범위 내에 들어왔을 때만 바라보도록 함
void OnTriggerStay(Collider collision)
{
if(collision.tag == "Player")
{
target = new Vector3(playerTransform.position.x, transform.position.y, playerTransform.position.z);
transform.LookAt(target);
}
}
}
조명 색상 변경 효과 구현
TimeController와 연동하여 게임상의 시간이 04:44가 되면 조명이 붉은색으로 변경됨
public class LightController : MonoBehaviour
{
public GameObject timeControllerObj;
Light lights;
TimeController timeController;
void Start()
{
lights = GetComponent<Light>();
timeController = timeControllerObj.GetComponent<TimeController>();
}
void Update()
{
// 04:44분이 되면 조명 색상 붉은 색으로 변경
if(timeController.timeHour == 4)
{
if(timeController.timeMinute == 44)
{
lights.color = Color.red;
}
// 04:44이 지나면 조명이 원래 색상으로 돌아옴
else
{
lights.color = Color.white;
}
}
}
}
CCTV및 관련 이벤트 구현
CCTV에 시체 오브젝트가 생길 경우 모니터를 재부팅하여 사라지게 함
재부팅하지 않고 시체가 있는 공간으로 갈 경우 이벤트 발생
public class CCTVevent : MonoBehaviour
{
public GameObject timeControllerObj;
public GameObject deadBodyObject;
public GameObject CCTVmonitor;
Renderer monitorRenderer;
TimeController timeController;
void Start()
{
deadBodyObject.SetActive(false);
timeController = timeControllerObj.GetComponent<TimeController>();
monitorRenderer = CCTVmonitor.GetComponent<Renderer>();
}
void Update()
{
// 00:01에 시체 오브젝트가 생기는 이벤트 작동(임시)
if(timeController.timeHour == 0)
{
if(timeController.timeMinute == 1)
{
deadBodyObject.SetActive(true);
}
}
// T를 누를 경우 CCTV 재부팅 (임시)
if(Input.GetKeyDown("t"))
{
Debug.Log("재부팅");
monitorRenderer.material.SetColor("_Color", Color.black);
Invoke("MonitorOn", 3f);
}
}
// 모니터가 다시 켜짐
void MonitorOn()
{
monitorRenderer.material.SetColor("_Color", Color.white);
//모니터를 재부팅 할 경우 시체가 사라짐
deadBodyObject.SetActive(false);
}
// 플레이어가 모니터를 재부팅하지 않고 시체가 있는 장소에 갈 경우 이벤트 발생
void OnTriggerStay(Collider collision)
{
if(collision.tag == "Player")
{
Debug.Log("Event");
}
}
}
'2학년 1학기 프로젝트' 카테고리의 다른 글
[개발일지] 나폴리탄스파게티 20230608 (0) | 2023.06.10 |
---|---|
[개발일지] 나폴리탄스파게티 20230607 (0) | 2023.06.09 |
[개발일지] 나폴리탄스파게티 20230602 (0) | 2023.06.09 |
[개발일지] 나폴리탄스파게티 20230601 (0) | 2023.06.09 |
[개발일지] 나폴리탄스파게티 20230531 (0) | 2023.06.09 |