◆ 코사인 법칙
- A^2 = B^2 + C^2 - 2 B C Cos Θ
◆ 사분면과 삼각함수
◆ 덧셈(뺄셈) 정리
Sin( a + b ) = Sin a Cos b + Cos a Sin b
Cos( a + b ) = Cos a Cos b - Sin a Sin b
◆ 반각 공식
( Sin a ) ^ 2 = ( 1 - Cos 2a ) / 2
========================================================
◆ Input.GetMouseButtonDown(0)
마우스 좌클릭이 되면 true 를 반환한다.
◆ Input.mousePosition
마우스 위치 좌표 ( 마우스 위치좌표엔 깊이 값이 존재하지 않으므로 z 값은 항상 0 )
이 경우엔 클릭이 되었을 경우 이 값이 인수로 넘어가므로 마우스가 클릭된 위치 일 것이다.
◆ Camera.main.WorldToScreenPoint( 포지션값(vector3) )
어떤 포지션 값을 월드좌표 기준에서 스크린 좌표 로 변환하여 그 값을 반환
반환값 : Vector3
◆ Mathf 클래스의 Atan2 아크탄젠트 [ Mathf.Atan2( vector.y , vector.x ) ]
Atan 이 아닌 Atan2 를 사용하는 이유는 두번째 인수가 0이 되는경우
( 즉 탄젠트를 구할수없는 경우 ) 적정한값 π / 2 or - π / 2 을 반환한다.
라디안 값 반환
◆ 라디안 값 X ( Mathf.Rad2Deg ) 하면 우리가 흔히하는 각도로 변환된다. ( float )
◆ Mathf.LerpAngle ( From , To , 1회 실행될때 진행되는 값 )
선형보간 기법으로 기본적으로 Lerp 와 같지만 각도에 대해서 사용,
그냥 Lerp 는 360도를 넘는 각도를 고려하지 않으므로.
◆ GameObject.CreatePrimitive( PrimitiveType )
PrimitiveType 에 해당하는 녀석을 Create 한다. 반환값은 GameObject
PrimitiveType : Capsule / Cube / Cylinder / Plane / Quad / Sphere
◆ 공이 튕기면서 캡슐위치로 가는 코드
sphere.transform.position = new Vector3( sphere.transform.position.x + (capsule.transform.position.x - sphere.transform.position.x) * Time.deltaTime * sphereMagnitudeX, Mathf.Abs(Mathf.Sin ((Time.time - buttonDownTime) *
(Mathf.PI * 2) * sphereFrequency) * sphereMagnitudeY), 0 );
하나씩 보자
X축
sphere.transform.position.x + (capsule.transform.position.x - sphere.transform.position.x) * Time.deltaTime * sphereMagnitudeX
공의 현재X값 + ( 캡슐의 현재X값 - 공의 현재 X 값 ) * 프레임 * 2.0f ( sphereMagnitudeX )
= 공의 현재 X값 + (공->캡슐 X벡터) * 이동정도
= 공이 현재 X위치에서 점점 공의 X 위치로 다가간다.
Y축
Mathf.Abs(Mathf.Sin ((Time.time - buttonDownTime) * (Mathf.PI * 2) * sphereFrequency) * sphereMagnitudeY)
절대값 ( Sin ( ( 현재시간 - 클릭된 시간 ) * ( π * 2 ) * 1.0f )
정확한 주기는 알수가 없지만 대략 Sin 그래프를 절댓값 씌운 형태로 Y값이 움직이게 될것이란것은 알수있다.
Z축
0 Z축은 현재 신경 안쓰고있다.