유튜브에도 한번 올려보고 리드미에 사용할 동영상도 찍어봤다

죽었을 때 게임오버 UI 만 띄우기는 허전해서 다시하기 버튼 완성

https://www.youtube.com/watch?v=ly9mK0TGJJo
이 영상을 보고 움직이는 발판을 추가
빈 오브젝트를 사용해서 기준점을 잡고
움직이는 발판이 빈 오브젝트의 위치를 찾아 움직이게끔 하는 방식
과제에는 추가 못했지만 트리거를 이용해서 플레이어가 움직이는 발판에 올라탔을 때 작동하도록 변경해주면 엘레베이터나 화면 전환용으로 사용 가능한 발판도 만들 수 있겠다

부모 오브젝트에 스크립트를 넣어주고 자식 오브젝트로 위치를 지정

public Transform GetWayPoint(int waypointIndex)
    {
        return transform.GetChild(waypointIndex);
    }

    public int GetNextWaypointIndex(int currentWaypointIndex)
    {
        int nextWaypointIndex = currentWaypointIndex + 1;

        if (nextWaypointIndex == transform.childCount)
        {
            nextWaypointIndex = 0;
        }
        
        return nextWaypointIndex;
    }

움직이는 발판에 적용시켜줄 코드

	[SerializeField]
    private WaypointPath _waypointPath;

    [SerializeField]
    private float _speed;
    
    private int _targetWaypointIndex;
    
    private Transform _previousWaypoint;
    private Transform _targetWaypoint;
    
    private float _timeToWaypoint;
    private float _elapsedTime;
    
    // Start is called before the first frame update
    void Start()
    {
        TargetNextWaypoint();
    }

    // Update is called once per frame
    void FixedUpdate()
    {
        _elapsedTime += Time.deltaTime;
        
        float elapsedPercentage = _elapsedTime / _timeToWaypoint;
        transform.position = Vector3.Lerp(_previousWaypoint.position, _targetWaypoint.position, elapsedPercentage);

        if (elapsedPercentage >= 1)
        {
            TargetNextWaypoint();
        }
    }

    private void TargetNextWaypoint()
    {
        _previousWaypoint = _waypointPath.GetWayPoint(_targetWaypointIndex);
        _targetWaypointIndex = _waypointPath.GetNextWaypointIndex(_targetWaypointIndex);
        _targetWaypoint = _waypointPath.GetWayPoint(_targetWaypointIndex);

        _elapsedTime = 0f;
        
        float distanceToWaypoint = Vector3.Distance(_previousWaypoint.position, _targetWaypoint.position);
        _timeToWaypoint = distanceToWaypoint / _speed;
    }

    private void OnTriggerEnter(Collider other)
    {
        other.transform.SetParent(transform);
    }

    private void OnTriggerExit(Collider other)
    {
        other.transform.SetParent(null);
    }

트리거는 플레이어가 발판위로 올라탔을 때 발판이랑 같이 연동해서 움직일 수 있도록 설정

0개의 댓글