Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
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 29 30
31
Tags more
Archives
Today
Total
관리 메뉴

코딩inf

#1 오브젝트 세팅 및 카메라 이동 --------------------[6/3] 본문

Unity/TowerDiffence

#1 오브젝트 세팅 및 카메라 이동 --------------------[6/3]

D-coding 2021. 6. 3. 21:55

일단 프로젝트 생성

이름은 T(ower)D(iffence)M(ade)B(y)L(ee)G(eon)H(ee) 로 지었다.

일단 땅 먼저 생성

유니티에서 오브젝트를 생성하면 뭔가 누리끼리 한데 이걸 바꿀 수 있는 방법이 있다.

[Window] [Rendering] [Lighting Settings] 로 가면 어떤 창이 뜨는데

여기서 [Generate Lighting]버튼을 누르면 된다.

 

 

[Before]

[After]

다시 본론으로 오면...

이제 땅의 Material을 생성 할것이다.

먼저 [Project] tab에서

[Scripts], [Materials], [Prefabs] 정도 파일을 만들어 주었다.

 

[Materials] 파일에 가서 새로운 Material을 만들어 준다.

 

그리고 땅을 격자 무늬로 할때는 

[Inspector] 창에서 Albedo 옆에 조그만한 점을 눌러주면

 

이런 창이 뜨는데 여기서 [default-Checker-Gray] texture를 선택해주면 된다.

 

그리고 현재 땅의 싸이즈는 x 100 z 100 이기 때문에 x 1 z 1 마다 한칸으로 하려면

 

Tiling의 값을 바꿔 주면 된다. 색은 알아서 하면 된다.

 

이제 추가적으로 다른 오브젝트들도 만들어 준다.

자 근데 여기서 드는 의문점! 투명도 설정 이다

Meterial을 만들고 위에 Shader에서

Legacy Shaders

 

Transparent

 

Diffuse

순으로 선택하고 색을 바꿀때

A 값을 조절 해주면 된다

 

일단 기본적인 오브젝트 세팅은 여기서 마무리 하겠다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

----------------------------------------------------------------------------------------------------

이제 카메라 이동 스크립트를 만들건데

스크립트 파일에 새로운 C#스크립트를 생성해주고 들어간다

 

 

 

코드 :

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

public class Camera_1: MonoBehaviour
{
    public float turnSpeed = 2.0f; // 마우스 회전 속도
    public float moveSpeed = 10.0f; // 이동 속도

    private float xRotate = 0.0f; // 내부 사용할 X축 회전량은 별도 정의 ( 카메라 위 아래 방향 )

    void Update()
    {
        MouseRotation();
        KeyboardMove();
        Shift();
        MoveCamera();
    }

    // 마우스의 움직임에 따라 카메라를 회전 시킨다.
    void MouseRotation()
    {
        // 좌우로 움직인 마우스의 이동량 * 속도에 따라 카메라가 좌우로 회전할 양 계산
        float yRotateSize = Input.GetAxis("Mouse X") * turnSpeed;
        // 현재 y축 회전값에 더한 새로운 회전각도 계산
        float yRotate = transform.eulerAngles.y + yRotateSize;

        // 위아래로 움직인 마우스의 이동량 * 속도에 따라 카메라가 회전할 양 계산(하늘, 바닥을 바라보는 동작)
        float xRotateSize = -Input.GetAxis("Mouse Y") * turnSpeed;
        // 위아래 회전량을 더해주지만 -45도 ~ 80도로 제한 (-45:하늘방향, 80:바닥방향)
        // Clamp 는 값의 범위를 제한하는 함수
        xRotate = Mathf.Clamp(xRotate + xRotateSize, -90, 90);

        // 카메라 회전량을 카메라에 반영(X, Y축만 회전)
        transform.eulerAngles = new Vector3(xRotate, yRotate, 0);
    }

    // 키보드의 눌림에 따라 이동
    void KeyboardMove()
    {
        // WASD 키 또는 화살표키의 이동량을 측정
        Vector3 dir = new Vector3(
            Input.GetAxis("Horizontal"),
            0,
            Input.GetAxis("Vertical")
        );
        // 이동방향 * 속도 * 프레임단위 시간을 곱해서 카메라의 트랜스폼을 이동
        transform.Translate(dir * moveSpeed * Time.deltaTime);
    }
    void Shift()
    {
        if(Input.GetAxis("CameraShift") > 0)
        {
            moveSpeed = 20.0f;
        }
        else
        {
            moveSpeed = 10.0f;
        }
    }
    void MoveCamera()
    {
        Vector3 dir = new Vector3(
            0,
            Input.GetAxis("Camera_2"),
            0
        );
        transform.Translate(dir * moveSpeed * Time.deltaTime);
    }
}

 

 

완성!

 

조작방법은 유니와 같다.

wasd와 qe shift인데

Q와E, Shift는 새로 추가를 해줘야 한다.

project settings 에 가서

input Manager에 size를 19로 늘려주고 

CameraShift와 Camera_2를 추가해준다.

그리고

이렇게 세팅 해주면 끝!

 

 

 

 

그럼 20000