브래의 슬기로운 코딩 생활
모바일 게임 실무 중간고사 정리 본문
모바일 게임 실무 중간고사
202114013 김동현
서브루틴: C 언어에서 사용하는 함수는 시작할 때 진입하는 지점이 하나 존재하고 함수가 모두 실행되거나, return 구문에 의해서 종료되는 지점을 설정
코루틴: 서브루틴과 같은 개념이나 진입하는 지점이 코루틴 여러 개 일 수 있는 함수
어떤 시점에서 함수(코루틴)를 호출했다가 다시 복귀, 그리고 다시 함수(코루틴)로 가서 실행하는 등 로직을 돌리는 방식이 필요할 때 사용
(정의): IEnumerator 코루틴함수이름(){} / (복귀): yield return /
(호출): StartCoroutine(“코루틴함수이름“); / (중지): StopCoroutine(“코루틴함수이름“);
1) yield return null // 다음 프레임까지 대기
2) yield return new WaitForSeonds( float time ) // 지정된 time초만큼 대기
3) yield return new WaitForEndOfFrame() // 모든 렌더링 작업이 끝날 때가지 대기
렌더링: 2차원의 화상에 광원·위치·색상 등 외부의 정보를 고려하여 사실감을 불어넣어, 3차원 화상을 만드는 과정
StopCoroutine()함수의 인자에 코루틴 함수명을 문자열로 넣으면 코루틴이 종료가 된다 하지만 코루틴 함수를 그대로 넣으면 코루틴 함수가 멈추지 않는다.
(GPT - 함수 이름을 문자열로 전달하면 해당 이름을 가진 모든 코루틴을 중지하고 함수를 직접 전달하면 특정 인스턴스를 중지하지 않는다.)
GetComponent<Renderer>().material.color = Color.red;
// 객체의 색을 빨간색으로 변경
Color c = GetComponent<Renderer>().material.color;
// 객체의 색을 c의 변수에 저장
c.a = 0.5f; // 변수 c의 투명도를 0.5로 지정
GetComponent<Renderer>().material.color = c;
// 변수 c에 저장된 색과 투명도로 다시 객체의 색을 변경
GetComponent<Rigidbody>().AddForce(Vector3.up * 10); // 위로 올라가는 명령어
Debug.Log(“”); // Consol창에 문자열 출력
Camera.main.transform.parent.position // 메인 카메라의 부모 객체의 위치
public void OnPointerEnter(){} // 카메라의 정면에 물체가 있을 때 호출
public void OnPointerExit(){} // 카메라의 정면에 물체가 없을 때 호출
public Material A; // 색깔 A 선언
GetComponent<Renderer>().material = A // 소스가 부착된 객체의 색이 A로 변경
Camera.main.transform.parent.position = ball1.position;
// 메인카메라의 부모 객체의 위치를 ball1의 위치로 이동
NavMesh(네브메쉬) // 사용하기 위해서는 using UnityEngine.AI를 해야함
- 유니티에서 제공하는 네비게이션 시스템
- 플레이어를 따라와 공격하는 AI에 사용
- 가는 경로를 찾을 수 있는 데이터 구조를 Bake 해서 지정
NavMeshAgent
- 목표를 향해 움직이는 물체에 지정해서 사용
- 설정에 따라 쫓아가면서 장애물 회피, 점프, 서로를 피하기 등을 설정
NavMeshAgent.destination = 캡슐.position;
// NavMeshAgent의 목적지를 캡슐의 위치로 지정
Agent Radius
객체의 접근막의 반지름의 크기 설정(값만큼 외각 여백 결정)
AgentHeight
어느 높이까지 뛸 수 있도록 허용할 것인지 설정 (최대 등산각도, 계단 높이에 영향을 줌)
Max Slope
경사는 어느 각도까지 올라갈 수 있을 것인지 설정
Step height
올라갈 수 있는 계단 높이 설정
private Transform targetTr; // 목표지점변수
private NavMeshAgent nma; // 추적자 객체
targetTr = GameObject.Find("Cylinder").GetComponent<Transform>();
// Cylinder를 찾아서 targerTr변수에 저장
nma = GetComponent<NavMeshAgent>();
// nma를 NavMeshAgent로 지정
nma.destination = targetTr.position;
// nma의 목적지를 targetTr의 위치로 지정
goal = Camera.main.transform;
//goal을 메인카메라의 위치로 설정
agent = GetComponent<NavMeshAgent>();
agent.destination = new Vector3(goal.position.x, goal.position.y, goal.position.z + 5);
// agent의 목적지의 위치를 goal위치의 z축으로 5 더한 값으로 지정
agent.destination = gameObject.transform.position;
// 목적지를 소스가 부착된 객체(자기 자신)의 위치로 설정
GetComponent<Animation>().Play("walk");
// “walk”애니메이션 시작
col.GetComponent<CapsuleCollider>().enabled = false;
// col의 CapsuleCollider를 비활성화 한다.
col.GetComponent<Animation>().Stop();
// col의 Animation 중지
col.GetComponent<Animation>().Play("back_fall");
// col이 “dack_fall” Animation을 실행
Destroy(col.gameObject, 3);
// col객체를 3초후 제거함
private GameObject spawnPoint;
spawnPoint = gameObject.transform.GetChild(0).gameObject
// 소스가 부착된 객체의 첫 번째 자식 객체를 spawnPoint로 설정
Rigidbody rb = spawnPoint.GetComponent<Rigidbody>();
// Rigidbody 변수 rb를 spawnPont의 Rigidbody로 설정
rb.AddForce(spawnPoint.transform.forward *30f);
// 30의 힘으로 spawnPoint가 앞으로 움직이도록 함
RatcastHit hit; // 레이저 변수 hit 선언
Debug.DrawRay(spawnPoint.transform.position, spawnPoint.transform,forward , Color.red);
// spawnPoint 위치에서 spawnPoint의 앞 방향으로 빨간선을 그림
if(Physics.Raycast(spawnPoint.transform.position, spawnPoint.transform.forward, out hit, 500))
// spawnPoint 앞 500m 거리에 물체가 있나?
if(hit.collider.name.Contains(“Capsule”))
// 그 물체가 캡슐인가?
GameObject bullet = Instantiate( Resources.Load("bullet", typeof(GameObject))) as GameObject;
// bullet을 복제하여 새로운 bullet을 만든다.
bullet.transform.rotation = spawnPoint.transform.rotation ;
bullet.transform.position = spawnPoint.transform.position ;
//새로 만들어진 bullet의 위치 값과 회전 값을 원래 bullet의 값으로 설정한다.
'2-2 > 모바일 게임 실무' 카테고리의 다른 글
모바일 게임 실무 기말고사 정리 (3) | 2023.12.06 |
---|---|
모바일 게임 실무 5주차 정리 (RaycastHit, NavMeshAgent) (0) | 2023.10.06 |
모바일 게임 실무 4주차 정리 (FPS) (0) | 2023.09.29 |
모바일 게임 실무 3주차 정리 (NavMesh) (0) | 2023.09.21 |
모바일 게임 실무 2주차 정리 (VR) (0) | 2023.09.14 |