Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

모바일 게임 실무 중간고사 정리 본문

2-2/모바일 게임 실무

모바일 게임 실무 중간고사 정리

김브래 2023. 10. 21. 18:26

모바일 게임 실무 중간고사

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>();

// nmaNavMeshAgent로 지정

 

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;

// colCapsuleCollider를 비활성화 한다.

 

 

col.GetComponent<Animation>().Stop();

// colAnimation 중지

 

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 변수 rbspawnPontRigidbody로 설정

 

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의 값으로 설정한다.