UNITY_C#

[유데미x스나이퍼팩토리]5회차_0920_커뮤니케이션 게임_유니티(Unity)10주 완성 프로젝트 캠프_마우스컨트롤

쫑나리 2023. 9. 20. 11:28
728x90
반응형
SMALL

Vector3 : X, Y, Z 3를 3차원 공간에서 위치나 방향을 표현하는 데 사용됩니다.
Quaternion : 회전을 나타대는데 사용, (x, y, z, w) 형태로 표현되며 네 개의 요소로 구성됩니다. 

PlayerPrefs :  간단한 기록을 로컬에 저장할 때

윈도우 플랫폼에서는 사용자 레지스트리에 저장, 모바일에서는 캐시파일로 저장

 

이벤트 프로그래밍

어떤 특정 행동을 취했을 떄 나오는 반응

이번 시간엔 커뮤니케이션 게임 만들기!

딱 어제 내가 게임을 만든다면... 난 게임을 아무고토 모르지만 어릴 때 즐겁게 하던

공주키우기, 딸기노트, 프린세스메이커, 농사게임 이런거라면 어쩌면 가능할지도 말을 했었는데..! 꺄

이번 강의는 딜리셔스게임즈 김병권 파트장님께서 고생해주셨습니다.

오늘도 유니티짱을 불러오기

프리팹 안에 들어있는 유니티짱을 데려오고, 스크립트를 위 세개를 꺼줬고,

나를 바라보도록 로테이션 y값을 180 을 줬습니다!!

조명도 예뻐보이게 조명 설정

 

카메라 설정 유니티짱을 중앙에 오도록 위치값조정했고, 배경색을 솔리드컬러로 주었습니다!

좀 더 가까이서 볼 수 있도록 Field of View를 30

실행을 해보면 유니티짱이 화면 중앙에서 알맞은 크기로 서 있습니다.

 

카메라를 마우스 드래그로 이동할 수 있도록 우선 컨트롤 스크립트를 만들어주고 메인카메라에 넣어줍니다

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

public class CameraControl : MonoBehaviour
{
    void Update()
    {   //왼쪽 드래그로 카메라 이동
        if (Input.GetMouseButton(0))
        {
            Camera.main.transform.Translate(
            Input.GetAxis("Mouse X") / 10,
            Input.GetAxis("Mouse Y") / 10,
            0);
        }
        // 오른쪽 드래그로 카메라 회전
        if (Input.GetMouseButton(1))
        {
            Camera.main.transform.Rotate(
            -Input.GetAxis("Mouse Y") * 10,
            Input.GetAxis("Mouse X") * 10,
            0);
        }
    }
}

이렇게만 되면 회전이 매우 어렵습니다...

해서 CameraParent를 만들어서 mainCamera를 자식으로 넣어주고

스크립트를 조금 수정해줍니다. 확대 축소도 함께 넣었읍니다

public class CameraControl : MonoBehaviour
{
    public GameObject target;

    Vector3 defPosition;
    Quaternion defRotation;
    float defZoom;

    private void Start()
    {
        // 기본 위치 저장 초기화
        defPosition = target.transform.position;
        defRotation = target.transform.rotation;
        defZoom = Camera.main.fieldOfView;
    }
    void Update()
    {   //왼쪽 드래그로 카메라 이동
        if (Input.GetMouseButton(0))
        {
            target.transform.Translate(
            -Input.GetAxis("Mouse X") / 10,
            Input.GetAxis("Mouse Y") / 10,
            0);
        }
        // 오른쪽 드래그로 카메라 회전
        if (Input.GetMouseButton(1))
        {
            target.transform.Rotate(
            -Input.GetAxis("Mouse Y") * 10,
            Input.GetAxis("Mouse X") * 10,
            0);
        }
        // 휠 회전으로 확대/축소
        if (Input.GetAxis("Mouse ScrollWheel") != 0)
        {
            Camera.main.fieldOfView += (20 * Input.GetAxis("Mouse ScrollWheel"));
            if (Camera.main.fieldOfView < 10)
                Camera.main.fieldOfView = 10;
            else if (Camera.main.fieldOfView > 100)
                Camera.main.fieldOfView = 100;
        }
        // 휠 클릭으로 설정 초기화
        if (Input.GetMouseButton(2))
        {
            target.transform.position = defPosition;
            target.transform.rotation = defRotation;
            Camera.main.fieldOfView = defZoom;
        }
    }
}

마우스컨트롤 성공

 

*마우스 트랙패드로도 잘 대응이 됩니다!

하지만 휠클릭을 터치패드로 어떻게 하는지 아시는분..........ㅎ

 

그리고 오디오 사용하기 !

넘모 소중해서 따로 정리해두었습니다.

https://narii.tistory.com/51

 

유니티 오디오 사용하기_행열이용하여 날짜별이벤트

PlayOneShot : 한번만 재생하기 DateCheck 스크립트를 생성해주었고, 유니티짱(Player)에게 주었습니다. public class DateCheck : MonoBehaviour { System.DateTime now; int nowMonth; int nowDay; private AudioSource univoice; public Audi

narii.tistory.com

 

728x90
반응형
LIST