앞선 내용들은 아래 링크를 누르면 볼 수 있다.
움직이는 바닥 만들기
이번에는 좌우로 움직이는 바닥을 만들어 보겠다.
MovingGround 스크립트를 만들어준다. 그리고 다음과 같이 작성해주자.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovingGround : MonoBehaviour
{
public GameObject[] waypoints; // 배열. 파이썬의 리스트 느낌. Object의 집합
public GameObject player;
int current = 0; // 현재 waypoint의 번호
float rotSpeed;
public float speed; // 움직이는 속도
float WPradius = 1f; // waypoint의 영역
public bool isRandom;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (isRandom) // 땅을 랜덤으로 움직이고 싶을 때
{
if (Vector3.Distance(waypoints[current].transform.position, transform.position) < WPradius)
{
current = Random.Range(0, waypoints.Length);
}
}
else
{
if (Vector3.Distance(waypoints[current].transform.position, transform.position) < WPradius) // waypoint와 이 게임 오브젝트와의 거리가 1보다 작으면
{
if (current < waypoints.Length - 1) // waypoints.Length = waypoints의 개수
{
current++; // current + 1. waypoint번호가 마지막 번호보다 작을 때, 다음 번호로 넘어간다.
}
else if (current >= waypoints.Length - 1)
{
current = 0; // waypoint번호가 마지막 번호와 같거나 클때, waypoint의 번호가 0으로 돌아간다.
}
}
}
transform.position = Vector3.MoveTowards(transform.position, waypoints[current].transform.position, Time.deltaTime * speed); // 땅을 waypoint의 위치로 움직이는데, Time.deltaTime * speed의 속도로 움직인다.
} // MoveTowards(A, B, Speed) A를 B로 Speed의 속도로 움직인다.
private void OnCollisionEnter(Collision other)
{
if (other.gameObject == player)
{
player.transform.parent = transform;
}
}
private void OnCollisionExit(Collision other)
{
if (other.gameObject == player)
{
player.transform.parent = null;
}
}
}
그 다음, 움직이고 싶은 땅에 부모를 만들어 주고, 같은 부모 안에 waypoint를 2개 만들어준다.
waypoint는 땅이 움직여서 도달할 최종 위치이다.
waypoint를 움직여서 위치를 설정해주고, Ground에 스크립트를 넣어 waypoint를 추가, 속도를 지정해주면 땅이 움직이게 된다.
음향설정
게임에 음악을 넣어주도록 하자.
Assets파일에 5.Sounds 파일을 만들어주고, 사용할 음악을 드래그해서 넣어준다.
Hierarchy에서 Create Empty를 해주고, 이름을 지정해 준다. 그 다음, add component를 하여 audio source를 추가해준다.
그 다음 audio clip에 음악을 드래그해서 넣어주면 완성이다.
'Unity' 카테고리의 다른 글
2024/04/17~ 포켓몬 게임 구현하기 (0) | 2024.04.17 |
---|---|
Roll-A-Ball 게임 만들기 미니 프로젝트 (0) | 2024.04.17 |
2024/04/04 Unity 미니 프로젝트 Roll-A-Ball 게임 만들기 5 (0) | 2024.04.04 |
2024/04/03 Unity 미니 프로젝트 Roll A Ball 게임 만들기4 (0) | 2024.04.03 |
2024/03/29 Unity 기초 프로젝트 Rall-A-Ball 게임 만들기 3 (0) | 2024.03.29 |