주차장 Scene을 제작할때 난이도 별로 따로 Scene을 제작하지 않고 아래와 같이 하나의 넓은 공간에 난이도 상, 중, 하의 주차장 공간을 제작하였다. 따라서, 사용자가 난이도에 따라 다른 위치에서 게임을 시작하도록 하는 코드가 필요했다.
1. 게임 Scene에 각각 난이도의 시작 위치에 Empty Object를 두고 각 Object 이름을 난이도에 맞게 "Level_1", "Level_2", "Level_3"으로 한다.
2. 아래 코드와 같이 Object의 이름("Level_1", "Level_2", "Level_3")으로 시작 위치를 알려주는 Object를 찾은 후, 사용자의 위치를 해당 Object의 위치로 설정한다.
3. 난이도 별로 객체의 rotate도 다르기때문에 난이도에 맞게 각도를 설정한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum Level
{
Level_1,
Level_2,
Level_3
}
public class Player_Spawn : MonoBehaviour
{
[SerializeField]
private GameObject Player;
private GameObject child;
private Quaternion rotate;
public Level level;
private BoxCollider area;
// GameObject 가져오기 (게임 시작 전에 제일 먼저 시작)
private void Awake()
{
// Prefab에서 load
Player = Resources.Load<GameObject>("chiron_Park");
Debug.Log(Player);
Debug.Log($"Level {level}");
}
void Start()
{
// spawn할 area 설정
child = GameObject.Find(level.ToString());
Vector3 currentPosition = child.GetComponent<Transform>().position;
switch (level)
{
case Level.Level_1:
rotate = Quaternion.Euler(0, 180, 0);
break;
case Level.Level_2:
rotate = Quaternion.identity;
break;
case Level.Level_3:
rotate = Quaternion.Euler(0, 90, 0);
break;
}
Instantiate(Player, currentPosition, rotate);
}
public GameObject GetPlayer()
{
return Player;
}
}
'Project > VR 기반 운전 시뮬레이션: 안전 "안전 운전만해" 프로젝트' 카테고리의 다른 글
[Part 11] 채점 알고리즘 & Trigger, Collsion (0) | 2022.05.14 |
---|---|
[Part 10] 타이머 설정 Timer & 카운트다운 CountDown: 유니티 이벤트 사용 (0) | 2022.05.14 |
[Part 8] 주차장 맵 제작 및 이벤트 구현: Waypoint System (0) | 2022.05.14 |
[Part 7] 하드웨어 장비 구매, 역할 설정, 일정 정리 및 공부 (0) | 2022.05.14 |
[Part 6] DB 설계, 화면 설계, 이벤트 설계 (0) | 2022.05.14 |