유니티/유니티 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;
}
}
}
플레이어가 발판에 올라 타 있는 동안에는 라인렌더러를 동적으로 계속 그려주고, 발판을 벗어날 때 발판이 움직이는 시간동안만 라인렌더러를 그려주도록 하였다.
반응형