반응형
오브젝트를 선택된 상태로 만들기 : (1) bool
오브젝트를 선택된 상태로 만들기 : (2) 이미지로 만들기
오브젝트를 선택된 상태로 만들기 : (3) Shader Outline
오브젝트를 선택된 상태로 만들기 : (4) 오브젝트를 하나만 선택하기
화면에서 원하는 오브젝트로 RayCast를 보내는지 확인이 되었다면, 이제 오브젝트를 선택해보자.
블럭을 누르면 selected가 true로, 다시 누르면 false로 만들어보자.
먼저 Block에 selected 변수를 추가한다.
처음은 선택되지 않은 상태 = false로 한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BlockMove : MonoBehaviour
{
public bool selected = false;
...
}
클릭을 한 번 할 경우에 오브젝를 선택할 수 있도록 아래와 같은 함수를 만들어서 Update에 추가한다.
GetMouseButtonDown은 클릭 한 번을 감지한다.
selectObject에서 hit을 구한 후, 위의 스크립트 <BlockMove>를 얻을 수 있다면, selected 상태를 변경한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SelectTest : MonoBehaviour
{
private RaycastHit hit;
void Update()
{
if (Input.GetMouseButtonDown(0)) selectObject();
if (Input.GetMouseButton(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Debug.DrawRay(ray.origin, ray.direction * 1000, Color.blue);
}
}
void selectObject()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
string objectName = hit.collider.gameObject.name;
Debug.Log(objectName);
BlockMove block = hit.transform.GetComponent<BlockMove>();
if (block == null) return;
block.selected = !block.selected;
Debug.Log(block.selected);
}
}
}
오브젝트를 클릭할 때마다 Selected가 변경된 것을 알 수 있다.
Selected의 상태에 따라 선택한 오브젝트의 색을 변경하거나 표시를 하면 된다.
이제 선택된 오브젝트를 Edge Detection Outline으로 강조해보자.
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
반응형
'개발 > Unity' 카테고리의 다른 글
유니티 - 선택한 블럭 이동하기 (0) | 2022.02.28 |
---|---|
유니티 - 블럭 한 칸 이동하기 (그리드 기반 이동, 코루틴) (7) | 2022.02.28 |
유니티 - 화면 클릭 시, RayCast 그리기 (0) | 2022.02.25 |
유니티 - 스크립트로 오브젝트 이동하기, RayCast로 멈추기 (2) (0) | 2022.02.23 |
유니티 - 스크립트로 오브젝트 이동하기, RayCast로 멈추기 (1) (0) | 2022.02.21 |
댓글