ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Rollick 개발 일지] 01. 간단한 기능 구현
    카테고리 없음 2023. 10. 20. 01:35

    Subway Sufers 플레이 영상 (https://youtu.be/QFzfgB34cCk?si=KHgouVeaRy_rhNwZ)

    유튜브에서 우연히 Subway Surfers플레이 영상을 보게 됐다. 

    괭장히 빠른 속도에서도 여유럽게 장애물을 넘어가는 것을 보고 대단하다고 생각이 들었지만 한 편으로는 
    '조금 더 아슬아슬하게 피하면 짜릿하고 보는 맛도 살지 않을까?' 라는 생각이 들었다.

     

    익스트림 스포츠 롱보드 다운힐 영상 (https://www.youtube.com/shorts/TTANIfnCG4k)

    스케이드 보드와 엮어 '장애물을 아슬아슬하게 피하면 점수를 더 주는 게임을 만드는 건 어떨까?'라는 생각을 하게 돼었고

    위의 생각을 토대로 아이디어를 다듬어 게임을 제작하기로 했다.

     

    에셋을 다운받아 내가 원하는 형태로 맵을 배치해 보았다. 맵이 뒤쪽으로 이동해 스케이트 보드가 맵을 달리는 기능 또한

    간단하게 구현했다.

     

    [SerializeField] private Transform _baseMapObj;
    public float _moveSpeed;
    
    private void Update()
    {
        _baseMapObj.Translate(Vector3.left * _moveSpeed * Time.deltaTime);
    }

    하지만 코드를 이렇게만 작성한다면 맵이 무한히 뒤쪽으로 이동하기 때문에 카메라 밖으로 벗어났을 때 스케이트 혼자 

    둥둥 뜨는 현상이 발생한다.

     

    해결법은 맵2개를 이어붙인 후 카메라를 완전히 벗어난 맵을 카메라에 보이고 있는 맵 앞쪽에 붙여주면 된다.

     

    잘 작동한다. 아래는 위에서 설명한 로직을 바탕으로 작성된 코드이다.

    public class MapMoveFunc : MonoBehaviour
    {
        [SerializeField] private Transform[] _maps = new Transform[2];
        [SerializeField] private float _limitPos;
        [SerializeField] private float _mapLength;
    
        public float _moveSpeed;
    
        private Transform _currentShowMap;
        private int _mapIdx = 0;
    
        private void Awake()
        {
            _maps[1] = Instantiate(_maps[0], GameObject.Find("MapTrans").transform);
            _maps[1].position = _maps[0].position + new Vector3(260, 0, 0);
    
            _currentShowMap = _maps[_mapIdx];
        }
    
        private void Update()
        {
            for(int i = 0; i < _maps.Length; i++)
            {
                
                _maps[i].Translate(Vector3.left * _moveSpeed * Time.deltaTime);
            }
            if(_currentShowMap.transform.position.x <= _limitPos)
            {
                _currentShowMap.transform.position += new Vector3(_mapLength * 2, 0, 0);
                _mapIdx++;
                if (_mapIdx == _maps.Length)
                    _mapIdx = 0;
                _currentShowMap = _maps[_mapIdx];
            }
        }
    }

    다음 포스팅은 맵이 앞 위치로 이동할 때 배치된 자동차 장애물들과 가장자리의 건물들이 랜덤으로 배치되도록 하는

    코드를 작성하겠다.

    다음 포스팅에서 뵙겠습니다.

     

    (깃허브 링크)

    - https://github.com/janghawon/Rollick

     

    (사용한 에셋 링크)

    - https://assetstore.unity.com/packages/3d/environments/simplepoly-city-low-poly-assets-58899

     

    SimplePoly City - Low Poly Assets | 3D 주변환경 | Unity Asset Store

    Elevate your workflow with the SimplePoly City - Low Poly Assets asset from VenCreations. Find this & other 주변환경 options on the Unity Asset Store.

    assetstore.unity.com

    - https://assetstore.unity.com/packages/3d/vehicles/land/bicycle-scooter-skateboard-170056

Designed by Tistory.