유니티/유니티 C#

[유니티/C#] 라인렌더러를 이용한 움직이는 발판

진서박 2023. 6. 16. 21:56
반응형

유니티 내장 기능을 이용하여 플레이어가 올라타면 위아래로 흔들리며 움직이는 발판을 구현한다.

사용한 컴포넌트

1. LineRenderer

2. SpringJoint

 

발판이 될 오브젝트에 LineRenderer와 SpringJoint를 부착한다.

LineRenderer에는 벽에 걸려있는 것처럼 보이는 역할을 하는 오브젝트를 부착한다.

SpringJoint는 적절하게 조정한다.

 

전체 코드

public class Draw_MoveLine : MonoBehaviour
{
    [Header("라인을 그리는 스크립트")]
    [SerializeField] private Draw_CollisionLine m_drawLine;

    [Header("라인의 움직일 축이되는 오브젝트")]
    [SerializeField] private Transform m_axisObject;

    private void OnCollisionStay(Collision collision)
    {
        if(collision.gameObject.CompareTag("Player"))
            m_drawLine.DrawLine(1, m_axisObject.position);
    }

    private void OnCollisionExit(Collision collision)
    {
        if (collision.gameObject.CompareTag("Player"))
        {
            Debug.Log("발판 탈출1");
            StartCoroutine(DrawMaintain());
        }
    }

    private IEnumerator DrawMaintain()
    {
        float _runtime = 0;

        while (_runtime < 2f)
        {
            Debug.Log("발판 탈출2");
            _runtime += Time.deltaTime;
            m_drawLine.DrawLine(1, m_axisObject.position);
            yield return null;
        }
    }
}

플레이어가 발판에 올라 타 있는 동안에는 라인렌더러를 동적으로 계속 그려주고, 발판을 벗어날 때 발판이 움직이는 시간동안만 라인렌더러를 그려주도록 하였다.

반응형