유니티 Mathf.PingPong 사용해보기

2023. 3. 22. 22:23유니티실습

반응형

Mathf.PingPong 함수는 주기적인 값을 생성하고자 할 때 사용합니다. 이 함수는 인자로 주어진 시간 값을 이용하여 0부터 주어진 최댓값까지 증가한 후, 다시 최댓값에서 0까지 감소하는 값을 생성합니다. 이러한 값은 주기적으로 반복되며, 반복되는 주기의 길이는 최댓값의 두 배입니다. 몇 가지 예로 특정지역을 왕복하는 장애물을 표현할 수도 있고 텍스트의 색상을 주기적으로 변화시키키는 효과도 만들 수 있습니다.

 

결과화면

각 오브젝트는 Math PingPong을 활용하여 두 지점을 반복하여 움직이게 하는 것이 가능합니다.

 

하이어라키 & 인스펙터

각 몬스터에게 동일한 스크립트를 제공하고 idx를 통해서 다른 방향으로 움직이도록 하였습니다.

 

스크립트 예제

public int idx;
    public float speed = 2f;
    public float distance = 2f;

    private float pingPong;
    private Vector3 startPosition;

    private void Start() {
        startPosition = transform.position;
    }


    void Update() {

        pingPong = Mathf.PingPong(Time.time * speed, distance);

        switch (idx) {
            case 0:
                // Y축 pingpong
                transform.position = startPosition + new Vector3(0f, pingPong, 0f);
                break;
            case 1:
                // X축 pingpong
                transform.position = startPosition + new Vector3(pingPong, 0f , 0f);
                break;
            case 2:
                // XY축 pingpong
                transform.position = startPosition + new Vector3(pingPong, pingPong, 0f);
                break;
    }
}

 

위의 스크립트는 시작지점을 기준으로 속도와 거리를 입력받아 그 크기 만큼 두 지점을 왕복하는 예제입니다.

 

 

반응형