객체가 있는 위치의 UV 가져오기

이런 느낌.



※ 화면을 클릭하여 표시 위치를 변경합니다.

단계

  • Camera.main.ScreenPointToRay
  • 화면에서 터치되는 곳에서 Ray
  • Physics.Raycast
  • 날아온 레이와 콜리더의 적중
  • 판정
  • RaycastHit
  • 적중된 대상의 정보
  • textureCoord
  • RaycastHit로 설정된 텍스쳐 좌표(UV)
  • ※ ↓ 에 코드를 넣었으니 함께 확인해 보세요.

    기타 노트(조사하고 싶은 일 등)


    아니, 메시 콜리더가 안 맞았어?안 날아, 레이 몰라?

    참고 자료


    Splatoon의 발라주는 그런 것을 재현하고 싶어요.
    http://esprog.hatenablog.com/entry/2016/05/08/212355

    소스 코드


    MousePainter.cs
    
    public class MousePainter : MonoBehaviour
    {
        private void Update()
        {
            if (Input.GetMouseButtonDown(0))
            {
                // クリックされたスクリーンの位置からRayを飛ばす
                var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hitInfo;
    
                // Rayとの当たり判定
                if (Physics.Raycast(ray, out hitInfo))
                {
                    #region Use_textureCoord
                    // シェーダにUVを渡す
    
                    var material = hitInfo.transform.gameObject.GetComponent<Renderer>().material;
    
                    Vector4[] _Pos = new Vector4[2];
    
                    _Pos[0] = new Vector4(hitInfo.textureCoord.x, hitInfo.textureCoord.y, 0, 0);
    
                    material.SetVectorArray("_Pos", _Pos);
    
                    #endregion Use_textureCoord
                }
            }
        }
    }
    

    좋은 웹페이지 즐겨찾기