저번에 한번 액터 선택시 조금더 큰 투명 액터를 만들어 윤곽선을 준듯이 만든적이 있었는데
유니티(Unity) AR foundation 오브젝트 선택 / 이동 / 크기조절
오늘은 전 글에 이어서 이번엔 설치한 오브젝트를 선택하고 이동하는 아래의 영상을 참고했습니다! 전 글하고는 코드가 좀 달라졌습니다;;; 이번 코드까지 완성한다면!! 아래 처럼 만들어집니다
ljhyunstory.tistory.com
이번에는 머터리얼/ 쉐이더를 이용해서 만들어 보았습니다!
아래 블로그와
유니티 URP OutLine Shader Graph
유니티 버전 : 2020.3.25f1(URP) 작업환경 : Mac (Monterey 12.2.1) 이번엔 외곽선을 구현하는 방법에 대해서 알아봤습니다. 유튜브에 정말 친절히 나와있더군요.. 유니티 에셋스토어를 이용해도 되지만 URP
roomdev-diary.tistory.com
유튜브 영상을 참고 하였습니다.
첫번째 방법은 윤곽선을 주고 싶은 액터에 조금 더 큰 액터를 덮어씌워주는 방식입니다.
우선 URP환경이 구축되어있다면 아래처럼 Unlit Shader Graph를 만들어주고
그래프를 아래처럼 구성해줍시다.
Scale의 기본값은 -1.1로 설정해주고
Position은 Object, Rotate About Axis는 Degrees로 설정해 줍시다.
그리고 그에 맞는 머터리얼을 생성
그후 아래처럼 스크립을 생성한후
OutlineScript.cpp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class OutlineScript : MonoBehaviour
{
[SerializeField] private Material outlineMaterial;
[SerializeField] private float outlineScaleFactor;
[SerializeField] private Color outlineColor;
private Renderer outlineRenderer;
void Start()
{
outlineRenderer = CreateOutline(outlineMaterial, outlineScaleFactor, outlineColor);
outlineRenderer.enabled = true;
}
Renderer CreateOutline(Material outlineMat, float scaleFactor, Color color)
{
GameObject outlineObject = Instantiate(this.gameObject, transform.position, transform.rotation, transform);
Renderer rend = outlineObject.GetComponent<Renderer>();
rend.material = outlineMat;
rend.material.SetColor("_OutlineColor", color);
rend.material.SetFloat("_Scale", scaleFactor);
rend.shadowCastingMode = ShadowCastingMode.Off;
outlineObject.GetComponent<OutlineScript>().enabled = false;
outlineObject.GetComponent<Collider>().enabled = false;
rend.enabled = false;
return rend;
}
}
윤곽선이 필요한 액터에 스크립을 넣고 아래처럼 작성해주면 끝!
윤곽선이 잘 표현되는걸 확인 할 수 있었습니다.
하지만.. .중력같은 물리력이 작동하면 윤곽선이 따라가지 못하는....
그래서 찾은 두번째 방법
두번째 방법은 액터자체에 2개의 머터리얼을 넣어주는 방법이였습니다.
위와 똑같이 Unlit Shader Graph를 하나 만들어 주고
이번엔 그래프를 Transparent로 설정해줍시다.
그다음 아래처럼 그래프를 구성한 후
이 그래프를 이용하여 머터리얼을 하나 생성해줍시다.
그 다음 윤곽선이 필요한 액터의 Mesh Renderer를 설정해주고, 아래로 내려가 머터리얼 설정값을 조절해주면 끝!
이제 물리력을 가해도 떨어지지 않는 OutLine 끝!
틀린점이 있다면 댓 달아주세요!

'유니티 최고 > 유니티 구현' 카테고리의 다른 글
유니티(Unity) DateTime(현재시간)에 대해서 + 유니티 공간상 낮과 밤 구현하기 (0) | 2024.04.19 |
---|---|
유니티(Unity) 터치, 마우스 클릭시 이펙트 생성하기 (0) | 2024.04.04 |
유니티(Unity) Grid지도 만들어 길찾기 구현하기(2)- 다익스트라(Dijkstra) 알고리즘 구현 (0) | 2023.05.18 |
유니티(Unity) Grid지도 만들어 길찾기 구현하기(1) (2) | 2023.05.17 |
유니티(Unity) LineRenderer를 이용한 여러 객체 연결하기 (1) | 2023.05.16 |
댓글