
폴아웃 드라마 영상을 보다가 (스포주의) 마지막에 결국 배터리(?)를 가동 시키면서 전기를 사용할 수 있게되었는데 갑자기 "저 전기가 전 세계에 어떻게 퍼져나가려나"라는 궁금함이 생겨서 전기를 전 세계에 퍼뜨리는 게임을 만들어보자 해서 갑자기 제작하게 되었다.

먼저 맵을 구성할 노드를 만들어보자. Scale를 4*1*4로 설정해주고 Node Material을 적용시켜준 후에 프리팹화시킨다.
노드에 앞으로 블럭을 지어서 전기를 통하도록 만들 계획인데 일단 건설을 하기 전에 마우스가 노드에 올라가 있음을 인식하게 하기 위해 Node Script를 아래와 같이 작성해준 다음에 컴포넌트로 추가해주었다.
using UnityEngine;
public class Node : MonoBehaviour
{
public Color hoverColor; // color changes when mouse is hovered over
private Renderer rend; // renderer component
private Color startColor; // start color
private void Start()
{
rend = GetComponent<Renderer>(); // call renderer component
startColor = rend.material.color; // remember start color
}
private void OnMouseEnter() // When the mouse passes or enters an object collider
{
rend.material.color = hoverColor; // change color to hoverColor
}
private void OnMouseExit() //
{
rend.material.color = startColor; // return color to startColor
}
}
마우스를 올리면 노드 색이 hoverColor로 변하는 것을 확인할 수 있다. hoverColor는 Inspector에서 적절하게 설정해주면 된다.


이제 노드에서 마우스를 클릭하면 노드가 건설되도록 해보자. 마우스 클릭 이벤트는 void OnMoudeDown()으로 쉽게 사용할 수 있다. 건설할 때 블럭의 종류를 현재 3가지 정도 생각하고 있는데 선택한 블럭을 노드에 건설하기 위해서 chooseBlock을 확인한 후에 건설을 진행해준다. 건설을 진행하기 앞서 건설을 따로 진행해주기 위해 BuildManager 스크립트를 하나 작성해주자.
using UnityEngine;
public class BuildManager : MonoBehaviour
{
public static BuildManager instance; // Singleton Pattern
private void Awake() // For singleton
{
if (instance != null)
{
return;
}
instance = this;
}
public GameObject standardBlockPrefab;
private void Start()
{
blockToBuild = standardBlockPrefab; //For Test
}
private GameObject blockToBuild; // blockToBuild GameObject
public GameObject GetBlockToBuild() // return blockToBuild;
{
return blockToBuild;
}
}
Block도 Prefab화 시켜서 불러올 수 있도록 간단하게 Cube Object로 하나 생성해준다.

추후에 Block 스크립트를 추가해준 다음에 클릭해서 해당 블럭을 건설하도록 로직을 구현할 예정이다.