코딩inf
#1 오브젝트 세팅 및 카메라 이동 --------------------[6/3] 본문
일단 프로젝트 생성
이름은 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
'Unity > TowerDiffence' 카테고리의 다른 글
#5 적 이동 스크립트 구현 / 타워설치(돈 감소) (6/24) (0) | 2021.06.24 |
---|---|
#4 에임 위에 있는 오브젝트 색 변화시키기(6/8) (0) | 2021.06.08 |
#3 에임위에 있는 오브젝트 이름 출력 [Raycast] (6/6) (0) | 2021.06.06 |
#2 입력키 출력--------------------------[6/5] (0) | 2021.06.05 |
#0 기획하기 (0) | 2021.06.04 |