일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 세마포
- C++
- 동기화
- 뮤텍스
- 스핀락
- registerForActivityResult
- ARface
- 안드로이드스튜디오
- unityAR
- SpinLock
- 광유다
- 바이너리세마포
- 포톤
- 지크슈
- mutex
- 게임개발
- NotFoundException: String resource ID #0x0
- semaphore
- photon
- 유니티
- Vector
- Unity
- unorderedset
- 유니티슈팅게임
- StartActivityForResult
- list
- Java
- map
- unorderedmap
- dependencyResilutionManagement
- Today
- Total
와와
[ Unity 슈팅게임 ] 1. 카메라/ 해상도/ 플레이어 방향키 움직임 본문
이대로는 방학이 끝날 것 같아 ( 무서워,, )
유니티 비주얼 스크립트 수업 들었던 내용 C#코드로 구현 및 기능 추가를 해보려 한다.
프로젝트는 Unity3D로 새로 만들었지만 2D슈팅게임을 만들 예정이므로
게임 해상도와 카메라를 우선 설정해주자!
1. Main Camera 설정
- Inspector > Projection : Orthographic
- Perspective: 원근법이 적용되는 3D 화면
- Orthographic: 원근법이 없는 2D 화면 ( 직각투영 )
2. 게임뷰 해상도 설정
- 640x960 ( +를 눌러서 따로 설정해줬다 )
원하는 해상도로 설정하면 된다. 나는 640x960으로 고정
3. 비주얼스튜디오 연동
이걸 해야 C# 코드 쓸 때 편하다.
4. 플레이어 움직임
< Move.cs >
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move : MonoBehaviour
{
public float speed = 5;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//플레이어가 화면 밖으로 나가지 못하도록 설정
Vector3 viewPos = Camera.main.WorldToViewportPoint(transform.position); //캐릭터의 월드 좌표를 뷰포트 좌표계로 변환해준다.
viewPos.x = Mathf.Clamp01(viewPos.x); //x값을 0이상, 1이하로 제한한다.
viewPos.y = Mathf.Clamp01(viewPos.y); //y값을 0이상, 1이하로 제한한다.
Vector3 worldPos = Camera.main.ViewportToWorldPoint(viewPos); //다시 월드 좌표로 변환한다.
transform.position = worldPos; //좌표를 적용한다.
//조작키
transform.Translate(new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0f) * speed * Time.deltaTime);
}
}
플레이어로 쓸 오브젝트를 하나 생성해주고
방향키 또는 w,s,a,d로 움직임을 조작할 수 있도록 했다.
속도를 정할 수 있도록 speed 변수를 두고 버튼 입력 값과 Time.deltaTime을 곱해서 위치를 바꿔주는 방식으로 했다.
플레이어가 자유롭게 움직이되 화면 밖으로 넘어가지 않도록 하고 싶었는데
이미 다른 사람들이 많이 해놨다ㅋㅋ
유니티는 월드 좌표계, 로컬 좌표계, 스크린 좌표계, 뷰포트 좌표계가 있다.
1. 월드 좌표계
: 월드 공간의 원점을 기준으로 특정 물체가 어느 위치에 존재하는지를 의미하는 절대 좌표계
ex) 지구( 월드 공간 ) 에서 우리집이 경도 위도 좌표로 어디에 위치하는지
2. 로컬 좌표계
: 특정 오브젝트를 기준으로 특정 물체가 어느 위치에 존재하는지를 의미하는 상대 좌표계
ex) 자식 오브젝트의 로컬 좌표는 부모 오브젝트를 기준으로 함
3. 뷰표트 좌표계
: 플레이 화면에 글자나 2D 이미지를 표시하기 위한 것.
4. 스크린 좌표계
: 단말기의 화면 좌표계로, 화면의 왼쪽 아래를 원점으로 하는 평면 절대좌표계
캐릭터의 월드 좌표를 뷰포트 좌표로 바꾸어서
Mathf.Clamp01를 이용해 x,y 좌표값을 각각 0~1로 제한한 다음
다시 월드 좌표로 바꾸어 적용했다.
'개발 > Unity 3D' 카테고리의 다른 글
[ Unity 슈팅게임 ] 3. 마우스 클릭으로 총알 발사 (0) | 2022.08.20 |
---|---|
[ Unity 슈팅게임 ] 2. 적 오브젝트/ 랜덤생성/ 충돌 설정 (0) | 2022.08.19 |
Unity AR 얼굴 인식 ( AR Face Manager ) (0) | 2022.07.22 |
Unity AR 개발환경 & 평면에 오브젝트 생성( 안드로이드 ) (0) | 2022.07.21 |
Unity VR 개발환경 ( 오큘러스퀘스트2/ XR interaction Toolkit ) (0) | 2022.07.21 |