본문 바로가기
반응형

유니티245

유니티 - 롱 클릭 progress bar 처리하기 Unity 전체 링크 참고 - 롱 클릭 구현하기 유니티 long click을 구현하였으니, 얼마나 오랫동안 클릭해야 하는지 progress bar로 보여주도록 하자. 먼저 Canvas를 만들고 Image에 적당한 원 이미지를 입힌다. 그리고 Image Type을 Filled로 Fill Method는 Radial 360으로 변경한다. 아래와 같이 카메라에 Image가 나온 것을 확인할 수 있다. 이미지의 Scale은 게임 오브젝트에 적당히 맞추면 된다. Image를 사용하기 위해 UI를 선언한다. using UnityEngine.UI; progress bar가 게임 오브젝트를 따라다니게 하기 위해 GameObject로 선언하고, Start를 할 때, Image를 progressBar에서 얻는다. 클릭 이벤.. 2022. 3. 15.
유니티 - 롱 클릭 구현하기 (Unity Long Click) Unity 전체 링크 참고 - 롱 클릭 progress bar 처리하기 유니티에서는 더블 클릭처럼 롱 클릭을 직접 구현해야 한다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class LongClickTest : MonoBehaviour { private float elapsedTime = 0.0f; private float longClickTime = 2.0f; private bool isClicked = false; public void OnMouseDown() { isClicked = true; } public void OnMouseUp() { isClicked = false; if(lon.. 2022. 3. 15.
유니티 UI - 간단한 토스트 메시지 만들기 (Toast Message) Unity 전체 링크 메시지가 연속으로 나오는 경우 - 코루틴 메시지 큐로 순서대로 함수 실행하기 Canvas에서 Text를 선언하고 적당한 위치의 화면에 Text를 옮긴다. 그리고 ToastMsg Text에 스크립트를 추가한다. Text를 사용하기 위해서는 UnityEngine.UI가 필요하다. 토스트 메시지는 게임 씬에서 유일하기 때문에 싱글턴으로 만든다. get을 이용해서 어떤 스크립트라도 ToastMsg.Instance.function(); 로 접근할 수 있게 만든다. 그리고 Awake에서 초기화 자기 자신을 할당한다. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;.. 2022. 3. 14.
유니티 - Line Renderer로 게임 오브젝트끼리 연결하기 (연결 선 그리기) Unity 전체 링크 참고 - OpenGL로 화면에 선 그리기 Debug.DrawRay는 디버깅용이기 때문에 실제 게임 화면에서는 보이지 않는다. 게임 화면에서 선을 그리기 위해서는 라인 렌더러(Line Renderer)가 필요하다. 오브젝트를 클릭해서, 다른 오브젝트로 연결할 수 있도록 해보자. 먼저 연결을 시작할 오브젝트에 스크립트와 라인 렌더러를 추가한다. 오브젝트를 클릭하기 때문에 콜라이더가 있어야 한다. 라인 렌더러를 추가하면 아래와 같이 라인이 생긴다. 라인 렌더러는 오브젝트를 이동시켜도 같이 움직이지 않는다. 매번 어떻게 그릴지 스크립트로 정해야한다. 따라서 최초에 enabled = false로 주어서 미리 꺼둔다. 그리고 원하는 색, width 등을 설정한다. linePoints에 대해서는.. 2022. 3. 12.
유니티 Attribute - 에디터 플레이 후 씬 자동 저장 (Unity Auto Saving In Editor) Unity 전체 링크 InitializeOnLoad를 이용하면 Play 실행 시 에디터의 코드를 실행할 수 있다. 아래의 스크립트를 누르고 Play를 눌러보자. using UnityEngine; using UnityEditor; using UnityEditor.SceneManagement; [InitializeOnLoad] public class AutoSaveSceneBeforePlay : MonoBehaviour { static AutoSaveSceneBeforePlay() { Debug.Log("Up and running"); } } 이제 playModeStateChanged에 이벤트를 추가해보자. 플레이 버튼을 누르고 종료하면 아래와 같은 로그를 볼 수 있다. using UnityEngine; u.. 2022. 3. 11.
유니티 스크립트 추상 클래스와 상속 Unity 전체 링크 더블클릭을 하면 연결된 player가 공격을 한다고 가정하자. using System.Collections; using System.Collections.Generic; using UnityEngine; public class DoubleClickTest : MonoBehaviour { float interval = 0.25f; float doubleClickedTime = -1.0f; //bool isDoubleClicked = false; public GameObject player; private void OnMouseUp() { if((Time.time - doubleClickedTime) < interval) { //isDoubleClicked = true; doubleCl.. 2022. 3. 10.
유니티 더블 클릭 구현하기 (Unity Double Click) Unity 전체 링크 유니티는 Input에서 롱 클릭과 더블 클릭을 지원하지 않는다. 따라서 더블 클릭을 직접 구현해야한다. 특정 시간 안에 두 번의 클릭이 들어왔는지 확인하기 위한 interval 변수, 그리고 더블 클릭의 첫 번째 클릭 시간 doubleClickedTime, 더블 클릭이 되었는지 check할 bool 변수가 필요하다. OnMouseUp에서 첫 번째 클릭이 들어오면 doubleClickedTime이 -1이기 때문에 반드시 else로 들어간다. 이후 interval 내에 두 번째 클릭이 들어오면 isDoubleClicked는 true가 된다. Update에서 doubleclick을 체크한 후, bool 변수를 초기화하면 더블 클릭 감지가 완료된다. using System.Collectio.. 2022. 3. 9.
유니티 - 게임 오브젝트 기준으로 카메라 움직이기 Unity 전체 링크 참고 → 시네머신 튜토리얼 링크 (시네머신을 이용하여 카메라 간편하게 조작하기) 아래와 같이 물체(Stage)를 기준으로 카메라를 회전시켜보자. 먼저 GetAxis를 이용해 움직일 범위를 정한다. 카메라는 마우스가 X 방향으로 움직일 때, 유니티 좌표계도 X 방향으로 움직이므로, x = Mouse X다. xRotateMove = Input.GetAxis("Mouse X") * Time.deltaTime * rotateSpeed; 위와 같은 구현은 RotateAround(기준점, 축, 속도)로 아주 간단하게 구현할 수 있다. Stage의 Y축을 기준 축으로 움직인다. (Vector3.up = 0, 1, 0) 그리고 카메라가 움직인 후, 기준이 되는 target을 LootAt으로 바라보.. 2022. 3. 7.
유니티 - 1인칭 시점 조작 first person view controller Unity 전체 링크 참고 → 시네머신 튜토리얼 링크 (시네머신을 이용하여 카메라 간편하게 조작하기) 카메라 회전을 하였으므로, 이제 카메라를 Player 아래로 둔다. 여기서 front는 player가 제대로 회전하는지 확인하기 위해 만들어둔 좌표다. 빈 오브젝트를 설정하여 플레이어보다 약간 앞 (Z=10)에 맞춰두자. front를 스크립트에 설정해두고 DrawLine을 설정한다. Debug.DrawLine(transform.position, objectFrontVector.position, Color.red); Player 앞에 line이 생겨서 방향을 구분할 수 있게 되었다. Camera에 회전을 하는 스크립트는 해제한다. 카메라는 Player의 자식이므로 Player가 회전하면 같이 회전하기 때문.. 2022. 3. 6.
반응형