2024. 2. 29. 14:09ㆍUnity
전라남도의 주요 발전소를 알아보기 위해서 공공 데이터에 나와있는 정보를 활용한다.
https://www.data.go.kr/data/15029803/fileData.do?recommendDataYn=Y
공공 데이터에서 받은 CSV 파일을 열어보면, 태양광 발전을 포함한 신재생에너지 현황이 나열되어있고, 여기서 태양광 발전소만 따로 필터하여 높은 설비용량의 발전소를 보려고 한다.
위성 지도와 비교해보면서 [솔라시도], [영광 태양광 발전단지], [금전 햇빛 태양광 발전소], [거금 솔라파크] 4개를 배치하는 것이 설비 용량도 있고 분포 되어있는 모양도 괜찮다고 생각했다.
확정된 위치에 따라 태양광 에셋을 배치하였고, 원과 직선 이미지를 직접 생성하여 지시하는 화살표로 사용했다.
이름 아래에 일일 발전량 텍스트를 추가하기 위해서 태양광 발전량 구하는 식을 찾아보았다.
https://workingplace.tistory.com/2
- 일일 태양광 발전량 = 지역별 평균 일일 일사량[kWh/m²/Day] * 태양광 설치 면적 * 태양광 모듈 발전 효율
- 일일 태양광 발전량 = 태양광 설치 총 용량 * 일일 발전량(=일일 지역별 일조시간 * 0.6)
일사량으로 발전량 구하기
아래의 링크의 데이터로 하루 일사량을 알 수 있다.
https://kier-solar.org/user/map.do?type=sl
광주의 4.12kWh/m²/Day 값을 참고하여 계산하면,
솔라시도 : 4.2kWh/m²/Day * (295,493.2m² + 200,621m² + 279,675m² + 284,101.8m²) * 23% = 4,451,565.2kW (4.45GW)
영광 태양광 발전단지 : 4.2kWh/m²/Day * (1,200,000m² + 229,960.5m² + 137,450.4m² + 221,088.7m² + 9,917.4m²) * 23% = 173,727,082.2kW (173.73GW)
금전 햇빛 태양광 발전소
거금 솔라파크
발전 면적은 네이버 지도의 면적 구하는 툴로 계산하였다.
일조시간으로 발전량 구하기
https://www.weather.go.kr/w/obs-climate/land/past-obs/obs-by-element.do
표에서, 각 월의 일조 시간을 모두 더해서 365로 나누면 일일 일조시간을 알 수 있다.
전남 영광의 일일 평균 일조시간은 5.66hr이다.
...발전량이 좀 이상해서 보류...
마우스를 올리면 에셋 스케일을 Coroutine을 이용해 천천히 변경하기, 솔라시도 부분 에셋을 누르면 다음 씬으로 넘어가기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ColliderButton : MonoBehaviour
{
public Vector3 hoverScale = new Vector3(1.7f, 1.7f, 1.7f);
public Vector3 hoverPosition = new Vector3(142.07f, -8.2041f, 96.441f);
public float lerpSpeed = 2f;
public bool nextScene = false;
private Vector3 initialScale;
private Vector3 initialPosition;
// 현재 실행 중인 코루틴을 추적하기 위한 참조 변수 추가
private Coroutine lerpCoroutine;
private void Start()
{
initialScale = transform.localScale;
initialPosition = transform.localPosition;
}
private void OnMouseEnter()
{
Debug.Log("마우스 호버");
// 중지된 코루틴이 있다면 중지
if (lerpCoroutine != null)
{
StopCoroutine(lerpCoroutine);
}
// 크기를 키우는 코루틴 시작
lerpCoroutine = StartCoroutine(LerpScale(hoverScale, hoverPosition));
}
private void OnMouseExit()
{
// 중지된 코루틴이 있다면 중지
if (lerpCoroutine != null)
{
StopCoroutine(lerpCoroutine);
}
// 크기를 줄이는 코루틴 시작
lerpCoroutine = StartCoroutine(LerpScale(initialScale, initialPosition));
}
private IEnumerator LerpScale(Vector3 targetScale, Vector3 targetPosition)
{
float elapsedTime = 0f;
Vector3 startingScale = transform.localScale;
Vector3 startingPosition = transform.localPosition;
while (elapsedTime < lerpSpeed)
{
transform.localScale = Vector3.Lerp(startingScale, targetScale, elapsedTime / lerpSpeed);
transform.localPosition = Vector3.Lerp(startingPosition, targetPosition, elapsedTime / lerpSpeed);
elapsedTime += Time.deltaTime;
yield return null;
}
transform.localScale = targetScale; // Ensure the target scale is reached
transform.localPosition = targetPosition;
}
private void OnMouseDown()
{
if(nextScene == true)
{
SceneManager.LoadScene(2);
}
}
}
위의 스크립트를 작성하고 지역 별 에셋에 넣으면, 마우스를 에셋 위에 올렸을 때 스케일이 변화한다.
코루틴 실행 중에도 마우스를 올렸다 내렸다하면 해당 코루틴을 즉시 중지하고 다른 코루틴이 실행되도록 수정하였다.
솔라시도 부분을 누르면 솔라시도 씬 화면으로 넘어간다.
'Unity' 카테고리의 다른 글
유니티 태양광패널 디지털 트윈 프로젝트(10) -첫 번째 씬 UI 통합 (2) | 2024.03.04 |
---|---|
유니티 태양광패널 디지털 트윈 프로젝트(9) -태양광 패널에 마우스 올려 발전량 정보 보기 본 씬 구현 (0) | 2024.02.29 |
유니티 태양광패널 디지털 트윈 프로젝트(7) -태양광 패널 에셋 본 씬에 배치, 전라남도 씬 구현 중 (0) | 2024.02.27 |
유니티 태양광패널 디지털 트윈 프로젝트(6) -3D 에셋에 마우스 호버 시 테두리 하이라이트 셰이더 만들기 -> 강조효과로 수정 (0) | 2024.02.23 |
유니티 태양광패널 디지털 트윈 프로젝트(5) -3D 에셋에 마우스 호버 시 정보 출력 기능 만들기 (0) | 2024.02.20 |