목록유니티 (30)
브래의 슬기로운 코딩 생활
cc = GetComponentInParent(); - 부모 객체의 Character Controller을 cc변수에 저장 vrCamera.eulerAngles.x // x축으로 기울어진 각도 vrCamera.TransformDirection //월드축 방향 cc.SimpleMove // 캐릭터의 스피드 값을 받아 그 만큼 이동시켜주는 함수 *Animator의 이름이 다른 이름이면 소스에도 그 이름을 사용 Animator anim; // 애니메이션 객체 anim선언 anim = GetComponent(); // anim에게 Animator 속성 부여 anim.Play("Base Layer.Idle"); // 괄호 안의 애니메이션 실행 OnPointerExit - 카메라가 객체를 바라보지 않으면 OnPoi..
Navigation 활용하기 NavMesh(네브메쉬) - 유니티에서 제공하는 네비게이션 시스템 - 플레이어를 따라와 공격하는 AI에 사용 - 가는 경로를 찾을 수 있는 데이터 구조를 Bake 해서 지정 using UnityEngine.AI; 필수 NavMeshAgent 목표를 향해 움직이는 물체에 지정해서 사용 설정에 따라 쫓아가면서 장애물 회피, 점프, 서로를 피하기 등을 설정 타겟 대상의 위치설정, 위치 설정시 바로 추적 시작 =>NavMeshAgent.destination = 캡슐.position; Agent Radius - 객체의 접근막의 반지름의 길이(값만큼 외각 여백 결정) Agent Height - 허용할 최대 높이(최대 등산각도,계단 높이에 영향을 줌) MaxSlope - 허용할 최대 경사..
오늘은 유니티를 활용해 가상현실을 구현하는 것을 배웠다. 대략 중요한 소스만 포스팅 하겠다. 가상현실에서 마우스를 이용하여 360도 시야를 볼 수 있고 화면의 중앙(에임)이 특정 물체에 겹치면 카메라가 다른 장소로 이동하는 앱이다. Player의 위치는 Camera.main.transform.parent.position - 플레이어는 메인 카메라의 부모 / 즉 카메라가 곧 플레이어 (특정 물체에 부착하는 소스) public void OnPointerEnter() - 카메라 에임이 자신을 가리키면 public void OnPointerExit() - 카메라 에임이 자신을 벗어나면 GetComponent().material = ? - 자신의 material(색상)을 ?로 설정한다. public Transfo..
코루틴(coroutine)이란? - Update()문은 기기의 CPU성능에 영향을 받으나 코루틴은 안 받음 - 코루틴이 10~20배 빠름 - 코루틴은 해당 함수를 끝까지 실행하지 않고, yield가 나오는 부분에서 일단 멈추고, 제어권이 돌아오면 남은 작업을 실행하는 방법 코루틴의 사용 (정의) IEnumerator (복귀) yield return (호출) StartCoroutine(“코루틴함수이름“) (중지) StopCoroutine(“코루틴함수이름“)
Addforce() - rigidbody에 기반한 힘 - 힘=가속도=속도의 변화량이기 때문에 속도라기보다는 속도 변화에 대한 값 Rigidbody.velocity: Rigidbody의 속도벡터 Rigidbody.Addforce(방향 * 힘)=> 가속도(힘)을 지정할 수 있는 속성 Rigidbody2D rigid2D; void Start() { this.rigid2D = GetComponent(); // Rigidbody2D부여 } if(Input.GetKeyDown(KeyCode.Space) && this.rigid2D.velocity.y == 0) { // Y축으로 움직이지 않고 스페이스바를 누르면 this.rigid2D.AddForce(transform.up * this.jumpForce); // 점..
isKinematic은 물리 엔진의 영향을 받지 않는 상태이다. 즉 이 값이 true이면 그 자리에서 멈추게 된다. GameObject B = Instantiate ( A ) as GameObject; // B 게임 오브젝트는 A게임 오브젝트의 복제이다. Ray = Camera.main.ScreenPointToRay(Input.mousePosition); // Ray는 카메라에서 마우스커서 위치로 향하는 가상의 선이다. Vector3.normalized // Vector3는 방향과 길이가 있는데 정규화를 하면 길이가 1로 고정됨 정규화를 하는 이유는 방향정보만 있고 속도가 1이라면 원하는 숫자를 곱해서 속도를 조절할수 있기 때문이다. Ray ray = Camera.main.ScreenPointToRay(..
오늘 만든 게임이다. 간단하게 떨어지는 물체를 바구니에 담는 게임 이다. Tag를 사용해 아이템 종류 판별하기 • 바구니에 받은 것이 무엇인지 판별하기 위해 tag사용 –아이템이 충돌했을 때 호출되는 OnTriggerEnter 메서드 –충돌 상대의 태그가 Apple이면 Tag => Apple, Bomb이면 Tag => Bomb가 됨 void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "Apple") { } else { } Destroy(other.gameObject); } –X좌표와 Z좌표에 각 각 -1, 0, 1 값을 무작위로 대입 –무작위 값을 대입하는 데는 Random 클래스 의 Range 메서드를 사용 Ray ray = Camera..
오늘은 고양이가 떨어지는 화살표를 피해야하는 간단한 게임을 만들었다. 사용된 개념 int px = Random.Range(-3, 4); :-3~3의 값 중 임의의 값이 px에 저장 public GameObject arrowPrefab;//화살표에 연결 //arrowPrefab이 복제됨 void Update(){ GameObject go = Instantiate(arrowPrefab) as GameObject } void Update() { GameObject go = Instantiate(arrowPrefab) as GameObject; int px = Random.Range(-3, 4); go.transform.position = new Vector3(px, 7, 0); } Time.deltaTime ..
오늘은 구름위를 점프하는 고양이 게임을 만들었다. 그리고 저번주에 본 중간고사 점수가 나왔는데, 35점 만점에 32점 맞았다. 이번 시험문제가 쉽긴했는데 평균이 30점이라고 해서 놀랐다. 다들 열심히 하는 구나 라는 생각을 했다. 화면을 터지하면 토끼가 점프를 하고 구름을 밟고 올라가서 위에 있는 깃발에 닿으면 게임이 종료되는 그런 게임이다. 여기서 쓰인 소스들은 다음을 응용한 것이다. Addforce() - rigidbody에 기반한 힘 - 힘=가속도=속도의 변화량이기 때문에 속도라기보다는 속도 변화에 대한 값 Rigidbody.velocity: Rigidbody의 속도벡터 Rigidbody.Addforce(방향 * 힘)=> 가속도(힘)을 지정할 수 있는 속성 Rigidbody.velocity: 움직이..
transform.Translate(x,y,z):게임오브젝트를 현재 위치에서 x,y,z의 거리만큼 이동시키는 명령어 transform.Translate(0,0,1);=>z축 방향으로 1만큼 움직임 transform.Rotate(x, y, z); = 0회전 자식은 부모와 함께 움직임 •스크립트로 Rigidbody부착 – gameObject.AddComponent(); •gameObject:스크립트가 연결되어 있는 게임 오브젝트 자신을 가리킴 •public변수:클래스(또는 스크립트파일)외부에서 접근 가능 •private변수: 변수가 선언된 클래스 안에서 만 접근가능 •local변수: 변수가 선언된 중괄호 내부에서만 접근 가능 Start():자동으로 한번 실행 Update(): 매 프레임마다 실행 1초에 1m..