본문 바로가기
반응형

유니티245

유니티 - 마우스로 카메라 회전하기 (오일러 각) 깃허브 데스크탑으로 프로젝트 관리하기 강의 오픈!! (인프런 바로가기) Unity 전체 링크 참고→ 시네머신 튜토리얼 링크 (시네머신을 이용하여 카메라 간편하게 조작하기) 현재 보고 있는 카메라의 위치를 회전시켜보자.즉 아래와 같이 Rotation Y (좌, 우), Rotation X (위, 아래)를 변경해야 한다.GetAxis는 함수의 세로 또는 가로에 속하는 입력을 -1에서 1의 범위로 취득한다.Mouse가 위로 올라갈 때 유니티 좌표계에서는 X가 바뀌기 때문에 xRotateMove에 Mouse Y가 들어간다.xRotateMove = -Input.GetAxis("Mouse Y") * Time.deltaTime * rotateSpeed;yRotateMove = Input.GetAxis("Mouse X".. 2022. 3. 5.
유니티 - 선택한 블럭 이동하기 Unity 전체 링크 선택된 블록(select == true)만, 화면의 왼쪽을 누르면 왼쪽으로, 오른쪽을 누르면 오른쪽으로 움직이도록 해보자. 화면의 오른쪽과 왼쪽을 구분하고 select == true인 경우만 움직이도록 코드를 추가한다. void Update() { Debug.DrawRay(transform.position, blockDown * rayLength, Color.red); if (down) transform.Translate(0, -Time.deltaTime * speed, 0); if(Input.GetMouseButtonDown(0) && move == false && selected == true) { Vector3 mousePoint = Camera.main.ScreenToView.. 2022. 2. 28.
유니티 - 블럭 한 칸 이동하기 (그리드 기반 이동, 코루틴) Unity 전체 링크 참고 - 드래그로 블럭 옆으로 한 칸 움직이기 마우스를 클릭했을 때, 블럭을 움직이게 하는 것은 쉽지만, 정확히 한 칸만 이동하는 것은 꽤 까다롭다. Update에서 Translate + delteTime으로 움직이기 때문에 매 프레임마다 정확히 한 칸 움직인 것을 체크하기도 까다롭고 구현하기도 까다롭다. 이런 경우 유니티의 코루틴(coroutine)을 이용하면 해결할 수 있다. 코루틴은 다음 프레임에서 중지한 곳부터 실행을 계속할 수 있는 기능이다. 아래의 함수를 보자. 먼저 클릭 이벤트가 발생하면 moveBlockTranslate라는 함수가 코루틴으로 실행된다. moveBlockTranslate에서는 move = true로 변경된다. 여기서 move는 이동 중인지 판단할 때 필요.. 2022. 2. 28.
유니티 - 오브젝트를 선택된 상태로 만들기 : (1) bool Unity 전체 링크 오브젝트를 선택된 상태로 만들기 : (1) bool 오브젝트를 선택된 상태로 만들기 : (2) 이미지로 만들기 오브젝트를 선택된 상태로 만들기 : (3) Shader Outline 오브젝트를 선택된 상태로 만들기 : (4) 오브젝트를 하나만 선택하기 화면에서 원하는 오브젝트로 RayCast를 보내는지 확인이 되었다면, 이제 오브젝트를 선택해보자. 블럭을 누르면 selected가 true로, 다시 누르면 false로 만들어보자. 먼저 Block에 selected 변수를 추가한다. 처음은 선택되지 않은 상태 = false로 한다. using System.Collections; using System.Collections.Generic; using UnityEngine; public cl.. 2022. 2. 25.
유니티 - 화면 클릭 시, RayCast 그리기 Unity 전체 링크 실제 화면에서 오브젝트를 클릭하고 싶은 경우가 있다. 이때는 클릭을 한 위치에서 RayCast를 쏴서 오브젝트를 구하면 된다. 그 전에, debuging을 위해 DrawRay를 이용해 마우스 클릭이 제대로 들어오는지 확인해보자. 마우스 버튼을 누르고 있으면 ray를 계속 그리도록 한다. Input으로 mousePosition을 받아 카메라의 ScreenPointToRay로 넘겨주고, 해당 ray의 위치와 방향을 DrawRay에 넘겨주면 된다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class SelectTest : MonoBehaviour { void Update() {.. 2022. 2. 25.
유니티 - 스크립트로 오브젝트 이동하기, RayCast로 멈추기 (2) Unity 전체 링크 스크립트로 오브젝트를 아래로 이동시켰지만, collider와 raycast 타이밍으로 인해 Y = 0에 정확히 멈추지 않는다. 가장 간단한 방법은 position의 위치를 순간이동 시키는 것이다. private void OnTriggerEnter(Collider col) { if (Physics.Raycast(transform.position, blockDown, out hit, rayLength)) { move = false; transform.position = new Vector3(transform.position.x, 0, transform.position.z); Debug.Log("point " + hit.point + "/ distance " + hit.distance +.. 2022. 2. 23.
유니티 - 스크립트로 오브젝트 이동하기, RayCast로 멈추기 (1) Unity 전체 링크 오브젝트를 아래로 떨어트려보자. 여기에서는 물리연산이 아니라 스크립트로 물체를 이동한다. 그리고 일정 간격 단위로만 움직인다고 가정한다. 먼저 단순히 아래로 블럭을 움직이는 코드는 Translate를 이용하면 된다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class BlockMove : MonoBehaviour { public float speed = GlobalManager.BLOCK_DOWN_SPEED;//Player의 이동 속도 // Update is called once per frame void Update() { transform.Translate(0, -Ti.. 2022. 2. 21.
유니티 - 클릭 후 화면 영역 구분하기 Unity 전체 링크 화면을 반으로 나누어 왼쪽을 클릭하면 Left, 오른쪽을 클릭하면 Right를 출력해보자. 먼저 마우스 왼쪽 버튼을 입력받았을 때, Input.mousePosition을 출력하는 코드는 아래와 같다. 창의 왼쪽 아래 부분부터 (0, 0) ~ (Screen.width, Screen.height)를 가르키게 된다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraClickTest : MonoBehaviour { void Update() { if(Input.GetMouseButtonDown(0)) { Debug.Log(Input.mousePosition.ToStr.. 2022. 2. 16.
유니티 스마트폰 해상도, 화면 비율 Unity 전체 링크 각 스마트폰마다 해상도가 다르기 때문에 테스트할 때 해상도를 알아둬야 한다. 화면 비율 해상도 기종 9 : 16 1440 x 2560 갤럭시 S6 ~ S7, 갤럭시노트 4 ~ 7 10 : 16 1600 x 2560 갤럭시 탭S 9 : 18.5 1440 x 2960 갤럭시 S8, 갤럭시노트 8 ~ 9 9 : 20 1440 x 3200 갤럭시 S20, S21 9 : 19.5 1080 x 2340 갤럭시 S22, S22+, S23, S23+, S24 9 : 19.3 1440 x 3088 갤럭시 S22, S23 울트라 9 : 19.5 1440 x 3120 갤럭시 S24+, S24 울트라 5 : 7 1536 x 2152 갤럭시 폴드 4 : 5 1768 x 2208 갤럭시 Z 폴드 2, 3 5.. 2022. 2. 16.
반응형