Unity_beginner #11

haechi·2021년 7월 12일
0

unity

목록 보기
11/39

210712
unity_beginner #11


  • 부모와 자식 게임 오브젝트
    parent / child object 관계

지금까지의 Ball 게임 화면을 보면 ground가 움직였을때 obstacle과 무관하게 따로 움직인 것을 볼 수 있다. -> 이를 함께 움직이게 하려면?

위와 같이 stage라는 게임 오브젝트를 생성 후 ground, obstacle을 드래그해서 넣어준다.
어떤것이 부모이고 자식인지 관계를 확인할 수 있다.

ground에 있는 script를 제거하고 stage에 넣어주면 동작을 동일하게 한다.


여기서 장애물과 ground 가 같은 기울기로 기울어지지만 장애물이 무언가 따로노는 느낌이 남아있다. 이는 local position과 관계가 있다.

  • local position
    -parent game object에 대한 상대적인 위치


화면에서 local로 표시된 부분이 있다. 이를 클릭하면 global과 local로 변환이 되는데. 이는 부모에 대한 상대적인 위치이냐 아니냐의 차이이다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Obstacle : MonoBehaviour
{
    float delta = -0.03f;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        float newXPosition = transform.position.x + delta; // local position이 아니다.
        transform.position = new Vector3(newXPosition, 2, -7);
        if(transform.position.x < -3.5)
        {
            delta = 0.03f;
        }
        else if(transform.position.x > 3.5)
        {
            delta = -0.03f;
        }
    }
}

위 코드는 obstacle의 script인데 position을 변경할 때 값은 local position이 아니다. 이를 local position으로 바꿔준다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Obstacle : MonoBehaviour
{
    float delta = -0.03f;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        float newXPosition = transform.localPosition.x + delta;
        transform.localPosition = new Vector3(newXPosition, transform.localPosition.y, transform.localPosition.z);
        if(transform.localPosition.x < -3.5)
        {
            delta = 0.03f;
        }
        else if(transform.localPosition.x > 3.5)
        {
            delta = -0.03f;
        }
    }
}

transform.position -> transform.localPosition으로 변경

ground 와 obstacle이 함께 움직이는 것을 확인

참고
https://programmers.co.kr/learn/courses/1/lessons/665

profile
공부중인 것들 기록

0개의 댓글