unity 53

Unity - Collision, Trigger 간단정리

1. Collision - 한 오브젝트에 rigid, collider가 존재하고 다른 오브젝트에 trigger가 켜지지 않은 collider가 존재할 결우 발생 - 단 rigid에 isKenematic은 꺼져있어야 한다 -> 다른 오브젝트는 켜져있어도 무관하다 2. Trigger - 한 오브젝트에 rigid, collider가 존재하고 다른 오브젝트에 trigger가 켜있는 collider가 존재할 경우 발생 결론 한 오브젝트에는 rigid와 collider둘다 필수적으로 들어가야 된다

Unity : 카메라 캐릭터 따라다니기 - 중간에 방해물이 있는경우

void LateUpdate() { if (_mode == Define.CameraMode.QuarterView) { RaycastHit hit; Debug.DrawRay(_player.transform.position, _delta, Color.red, 0.1f); //Wall layer이 존재하면 카메라를 그 앞으로 이동시킨다 if (Physics.Raycast(_player.transform.position, _delta, out hit, _delta.magnitude, LayerMask.GetMask("Wall"))) { float dist = (hit.point - _player.transform.position).magnitude * 0.8f; transform.position = _playe..

Unity : 카메라 캐릭터 따라다니기

1. 캐릭터를 따라다니는 카메라 // _delta이 없으면 캐릭터 바로 아래에 카메라가 위치하므로 이 값으로 카메라 위치를 조정한다 Vector3 _delta = new Vector(0.0f, 6.0f, -5.0f); //LateUpdate()는 Update()보다 무조건 늦게 실행된다. //주로 Update()에서 이동이 실행되므로 LateUpdate()에 코드를 넣어줘야 카메라의 버벅거림이 없다 void LateUpdate() { transform.position = _player.transform.position + _delta; } 2. 캐릭터가 보는 방향하고 카메라를 일치 시키기위해서 - 캐릭터의 하위계층에 카메라를 넣는다 Unity : 카메라 캐릭터 따라다니기 - 중간에 방해물이 있는경우 vo..

Unity: raycasting - Object확인 방법

raycasting을 이용하여 게임상 화면에 클릭한 공간에 물체가 있는지 여부를 확인해보자 Local , World, Viewport, Screen 좌표 local : object 자신의 좌표 World : global 좌표 Sreen : 게임화면상 좌표 Viewport : Screen 좌표를 비율로 표시한 좌표 (0~1, 0~1, 0)으로 나타난다 1. 우선 스크린의 마우스 좌표를 워드좌표로 변경한다 //Screen좌표 즉 2D상의 좌표를 world좌표로 3D좌표로 바꿔준다 //Camera.main.nearClipPlane는 카메라의 Near을 나타낸다 Vector3 mousePos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,..

Unity : 오브젝트 위치제어방법

유니티에서 좌표는 local, global로 구분되어 있다 local : object가 바라보고 있는 방향 기준 global : world좌표를 기준 유니티 object 제어 방법 : global transform.position += new Vector3(0.0f, 0.0f, 0.1f) * Time.deltaTime * _speed; //Vector3(0.0f, 0.0f, 0.1f) = Vector3.forward 유니티 object 제어 방법 : local transform.Translate(Vector3.forward * Time.deltaTime * _speed); transform.position += transform.TransformDirection(Vector3.forward * Time...

Unity : Vector3 구현해보기

유니티에는 Vector3가 존재하는데 간단한 코드들을 구현해 보았다 struct MyVector { public float x; public float y; public float z; //크기 or 길이 구하기 public float magnitude{ get { return Mathf.Sqrt(x * x + y * y + z * z); } } //정규화 public MyVector normalized { get { return new MyVector(x / magnitude, y / magnitude, z / magnitude); } } public MyVector(float x, float y, float z) { this.x = x; this.y = y; this.z = z; } public st..