이영호님의 강의를 토대로 정리한 내용입니다. 1. 어플리케이션 생성 포톤사이트에 접속하여 아이디를 생성 후 로그인합니다. 로그인 후 우측 상단 아이콘을 누르면 나오는 관리화면 페이지에 들어갑니다. 새 어플리케이션 만들기 버튼을 클릭 후 적당한 이름, 설명을 기입 후 작성하기 버튼을 클릭합니다. 대시보드에 생선된 포톤 어플리케이션 정보입니다. 어플리케이션 ID는 Unity에 사용하므로 복사해놓습니다. 2. 유니티 세팅 에셋스토어에서 pun2를 검색후 다운로드, Import 합니다. Import가 완료되면 방금전 만들었던 어플리케이션 ID를 기입하라는 창이 나옵니다. AppId 기입후 Close 버튼을 누릅니다. 혹시나 Skip하였다면 Window -> Photon Unity Networking -> Hig..
Unity 공식 사이트에서의 TransformDirection 함수는 아래와 같이 설명되어 있습니다. 로컬공간에서 월드공간으로 /direction/을 변환합니다 즉 TransformDirection 함수는 해당 transform의 로컬공간에서의 벡터를 월드공간에서의 벡터로 바꿔주는 함수입니다. 예를들면 오브젝트를 정면으로 움직이게 하기 위해 transform.position = transform.position + transform.TransformDirection(Vector3.forward); 처럼 사용할 수 있습니다. 물론 transfomr.Translate(Vector3.forward); 처럼 편하게 구현할 수 있지만 Rigidbody, CharacterController와 같이 상대 좌표가 아닌..
출처 : https://stackoverflow.com/questions/18484577/how-to-get-a-random-number-from-a-range-excluding-some-values private int GetRandomNumber() { var exclude = new HashSet() { 5, 7, 17, 23 }; var range = Enumerable.Range(1, 100).Where(i => !exclude.Contains(i)); var rand = new System.Random(); int index = rand.Next(0, 100 - exclude.Count); return range.ElementAt(index); } 원하지 않는 숫자를 제외한 범위(코드에서는 1..
1. 탄젠트를 사용하여 각도 구하기 - 출처 위 두 공식을 사용하여 두 점 사이의 각도를 구할것입니다. 우선 기준이 될 시작점과 시작점으로부터의 각도를 구할 끝점을 구하기 위해 시작점 벡터에서 끝점 벡터를 빼줍니다. 그러면 시작점에서 부터 끝점으로 향하는 벡터가 구해지는데 이 백터의 x,y를 atan에 넣으면 두 점 사이의 각도를 구할 수 있습니다. 12345 float GetAngle(Vector2 start, Vector2 end) { Vector2 v2 = end - start; return Mathf.Atan2(v2.y, v2.x) * Mathf.Rad2Deg; }Colored by Color Scriptercs 2. Angle Unity에 두 점 사이의 각도를 구할수 있는 Vector2.Angl..
코드 2-13, 2-14 를 구현하였습니다. 2차원 벡터를 회전시키는 확장 함수 123456789101112131415161718using UnityEngine; public static class MyExtension{ public static Vector2 Rotate(this Vector2 v2, float degrees) { float sin = Mathf.Sin(degrees * Mathf.Deg2Rad); float cos = Mathf.Cos(degrees * Mathf.Deg2Rad); float tx = v2.x; float ty = v2.y; v2.x = (cos * tx) - (sin * ty); v2.y = (sin * tx) + (cos * ty); return v2; }}Colo..
그림 2-20 을 구현하였습니다. Instantiate, Destroy 사용은 자원 낭비가 심하기 때문에 다음 진행부터는 풀링을 사용하여 구현할 것입니다. 123456789101112131415161718using UnityEngine; public class MoveBullet : MonoBehaviour { public float speed; public Vector2 bulletSpeedVector; private void Update() { transform.Translate(bulletSpeedVector * Time.deltaTime * speed); Vector2 viewportPos = Camera.main.WorldToViewportPoint(transform.position); if(v..
게임 매니악스 슈팅 게임 알고리즘에 나오는 방향탄 코드 2-11를 Unity에서 테스트해봤습니다. 실시간으로 Sin, Cos 연산을 하지 않고 미리 1도 마다 계산을 해놓아 필요할 때 계산을 하는것이 아닌 미리 계산된 값을 가져오는 방식입니다. 12345678910111213141516171819202122232425using System.Collections;using System.Collections.Generic;using UnityEngine; public class Table : MonoBehaviour { public Vector2[] posArray; private void Awake() { for(int i = 0; i
게임 매니악스 슈팅 게임 알고리즘에 나오는 방향탄 코드 2-7, 2-8을 Unity에서 테스트해봤습니다. 12345678910111213using UnityEngine; public class InitDirectedBullet{ public static Vector2 GetBulletSpeedVector(float theta) { Vector2 bulletSpeedVector; bulletSpeedVector.x = Mathf.Cos(Mathf.PI / 180 * theta); bulletSpeedVector.y = Mathf.Sin(Mathf.PI / 180 * theta); return bulletSpeedVector; }} Colored by Color Scriptercs 12345678910111..
게임 매니악스 슈팅 게임 알고리즘에 나오는 조준탄 코드 2-1, 2-2를 Unity에서 테스트해봤습니다. 12345678910111213141516171819202122232425262728293031323334353637383940using UnityEngine; public class InitAimingBullet : MonoBehaviour { public Transform enemy; public Transform main; public float bulletSpeed; Vector2 mainPos; Vector2 enemyPos; Vector2 bulletPos; Vector2 bulletSpeedVector; float distance; public Vector2 GetBulletSpeedVe..
12345678910111213141516171819202122232425262728293031using System.Collections;using System.Collections.Generic;using UnityEngine; [ExecuteInEditMode]public sealed class Font : MonoBehaviour{ [SerializeField] private string SortingLayerName = "Default"; [SerializeField] private int SortingOrder = 0; public void OnValidate() { apply(); } public void OnEnable() { apply(); } private void apply() { v..