fullstack

[Unity] 자식오브젝트에 있는 Collider 체크를 부모오브젝트에서 해야할때

Unity

unity 에서 부모오브젝트를 축으로 두고 자식오브젝트에 실제 모델링 오브젝트를 넣는 구성을 많이 합니다

 

이런 구조일 경우 스크립트처리는 부모오브젝트에서하는데 collider가 자식오브젝트에 있기 때문에 충돌체크가 난감할 수 있습니다

 

이는 아주 쉽게 해결이 가능합니다

바로 Rigidbody를 부모오브젝트에 추가해주기만 하면 됩니다

 

그럼 자식오브젝트에 충돌감지가 들어와도 부모오브젝트로 알아서 전달되게됩니다

 

[Unity] Spine 오브젝트 tint/dark color 변경하기

Unity

unity 에서 spine 오브젝트 material의 tint color 와 dark color 를 변경하는 방법 입니다

 

우선 shader를 Spine/Skeleton Tint 로 변경해 줍니다

 

코드는 다음과 같습니다

private MeshRenderer _renderer;
private MaterialPropertyBlock _block;

void Start()
{
    _renderer = GetComponent<MeshRenderer>();
    _block = new MaterialPropertyBlock();
    
    _renderer.SetPropertyBlock(_block);
    
    int id = Shader.PropertyToID("_Black");

    _block.SetColor(id, Color.red);
    _renderer.SetPropertyBlock(_block);
}

 

여기서 PropertyToId 를 "_Color" 라고 할 경우 Tint Color를, "_Black" 이라고 할 경우 Dark Color 를 변경할 수 있습니다

 

MaterialPropertyBlock 을 이용하여 원하는 색을 적용시켜 주면 됩니다

 

이를 반복문으로 구현하면 이런식으로 데미지를 받는 것 같은 효과를 줄 수 있습니다

 

 

 

[Unity] 랜덤값 출력. Random.Range

Unity

Unity 에서 랜덤값을 출력하고 싶을때는 Random.Range 를 사용하면 됩니다

 

Random.Range(min, max)

여기서 주의할 점은 시작 값은 포함되고, 끝 값은 포함되지 않는다는 것 입니다

 

예를 들어보겠습니다

 

int r = Random.Range(1, 10);

이렇게 사용한다면 r 이라는 변수에 1, 2, 3, 4, 5, 6, 7, 8, 9 중에 하나의 값이 랜덤으로 들어가게 됩니다

 

만약 소수점까지 사용하고 싶다면,

 

float r = Random.Range(0.1f, 1.0f);

 

이런식으로 자료형만 바꾸어서 사용하면 됩니다