'분류 전체보기'에 해당되는 글 495건

  1. 2014.02.16 적이 메인카메라 쪽 바라보게 하기
  2. 2014.02.16 삼각함수 관련
  3. 2014.02.16 벡터
  4. 2014.02.14 메카닉 관련 유니티 제공 에셋
  5. 2014.02.13 플레이어 가속도 주는 함수.
  6. 2014.02.10 버튼 다운로드 사이트
  7. 2014.02.06 Vector3.Slerp 두 벡터 사이의 곡선 이동 (1)
  8. 2014.02.06 자식오브젝트에서 부모 오브젝트 스크립트 실행
  9. 2014.02.06 OnMouseDown 및 List 활용한 이웃 블록 저장.
  10. 2014.02.06 큐브를 사용해서 커다란 보드 만들기.

적이 메인카메라 쪽 바라보게 하기

|
y축으로만 회전할수 있도록 x,z 값은 0으로 만들어주고 Lookat함수를 사용해서 카메라를 바라보게함
Trackback 0 And Comment 0

삼각함수 관련

|

코사인 90도는 0

코사인 0도는 1


사인 90도는 1

사인 0도는 0


'유니티 > Note' 카테고리의 다른 글

유니티 광고 수익  (0) 2014.02.18
유니티 개발 시작  (0) 2014.02.18
삼각함수 관련  (0) 2014.02.16
벡터  (0) 2014.02.16
메카닉 관련 유니티 제공 에셋  (0) 2014.02.14
유니티 2D 배경에 카메라 맞추기  (0) 2014.02.04
Trackback 0 And Comment 0

벡터

|

벡터의 해석


1. 위치

2. 속도와 가속도

3, 방향과 거리




(위치)                                                                 (속도)                                                ( 방향)                                      (거리)











스칼라

- 방향을 가지고 있지 않고 크기만 가지고 있는 물리량(온도,길이,속력)


벡터의 표현 방법


v = (x,y)


벡터의 덧셈


c = a + b = (a.x, a.y) + (b.x, b.y) = (a.x + b.x , a.y + b.y)


예) 벡터를 사용해 계산해보자

위치가 p = (3,2) 이고 여기에 속도 벡터 v = (-2,3)을 더해보면 다음과 같은 위치값을 얻을수 있다.

`p = (3 + -2, 2+3) = (1,5) 이때 p 오른족 위에 있는 어퍼스트로피는 단지 p 벡터를 구했음을 나타내는 표시이므로 신경쓸 필욘 없다.

물론 이 연산은 위치와 방향 벡터 단위가 서로 일치할때만 말이 된다. 여기서는 미터(m)이고 속도가 초당 미터(m/s)라고 가정할때 벡터단위가 일치한다.


벡터의 뺄셈


c = a -b = (a.x, , a.y) - (b.x, b.y) = (a.x - b.x, a.y - b.y)

  

 이때도 두 벡터의 요소를 서로 합치기만 하면 된다. 하지만 벡터의 뺄셈을 뺄때는 빼는 순서가 중요하다. 

예를 들어서 pg=(1,4) 에 있고 pr = (6,1) 에 있으면  pg에서 pr의 거리 벡터를 빼면 다음과 같다.


 d = pg - pr = (1,4) - (6,1) = (-5,3)


그런데 결과가 약간 이상합니다. 이 값은 pr에서 pg를 가리키는 벡터이기 때문입니다. 원하는 값을 구하려면 뺄셈의 순서를 반대로 해야된다.


 d = pr - pg = (6,1) -  (1,4) = (5,-3)


위치 a에서 위치 b로의 방향 벡터를 구하려면 다음과 같은 일반 공식을 사용해야 한다.


c = b - a


다시 말해서 항상 끝 위치에서 시작 위치를 빼야 하는 것이다. 


벡터는 스칼라만큼 곱할 수도있다.

a` = a * scalar = (a.x * scalar, a.y * scalar)

벡터가 d =(0, -1) 로 지정되면 이 벡터에 s= 2스칼라를 곱하면 벡터의 길이를 두배로 만들수있다. d * s = (0, -1 * 2) = (0, -2)
물론 1보다 작은 스칼라를 사용하면 길이를 더 줄일수도 있다 예를 들어 d에 0.5를 곱하면 d` = 0, -0.5) 가 된다.

벡터의 길이

|a| = sqrt(a.x * a.x + a.y * a.y)

이때 |a| 의 표기는 벡터의 길이를 나타낸다. (피타고라스의 정리)

벡터의 길이는 루트의 특성상 항상 양의 값이다.

위의 pr과 pg의 벡터의 길이는 다음 과 같다.
|pr - pg| = sqrt(5 * 5 + -3 * -3) = sqrt(25 +9) = sqrt(34) ~= 5.83m


단위벡터

길이가 1인 벡터를 단위 벡터라고 한다.

d` = (d.x/|d|, d.y/|d|)

|d|는 벡터의 길이입니다.

예를들어 정확히 북동쪽으로 향하는 방향 벡터 d (1,1) 이 필요하다고 가정하자 얼핏 보기에는 두 벡터 요소 모두 1이므로 이 벡터는 이미 단위 벡터 처럼 보인다. 하지만 이는 잘못된 생각이다.
|d| = sqrt(1*1, 1*1) = sqrt(2) ~= 1.44

이 벡터를 단위 벡터로 만들면 문제를 쉽게 해결할수있다.

|d| = (d.x/|d|, d.y|d|) = (1/|d|, 1/|d|) ~= (1/1.44, 1/1.44) = (0.69, 0.69)

이를 벡터 정규화라고 한다 벡터 정규화는 벡터의 길이 값을 1을 갖게 만듦을 뜻한다.





'유니티 > Note' 카테고리의 다른 글

유니티 개발 시작  (0) 2014.02.18
삼각함수 관련  (0) 2014.02.16
벡터  (0) 2014.02.16
메카닉 관련 유니티 제공 에셋  (0) 2014.02.14
유니티 2D 배경에 카메라 맞추기  (0) 2014.02.04
유니티 창 여러개 띄우기  (0) 2014.02.04
Trackback 0 And Comment 0

메카닉 관련 유니티 제공 에셋

|


teddy.z01


teddy.z02


teddy.z03


teddy.z04


teddy.zip


'유니티 > Note' 카테고리의 다른 글

삼각함수 관련  (0) 2014.02.16
벡터  (0) 2014.02.16
메카닉 관련 유니티 제공 에셋  (0) 2014.02.14
유니티 2D 배경에 카메라 맞추기  (0) 2014.02.04
유니티 창 여러개 띄우기  (0) 2014.02.04
현재 보고 있는 Scene와 똑같이 Game 뷰를 보는 방법  (0) 2014.02.04
Trackback 0 And Comment 0

플레이어 가속도 주는 함수.

|
플레이어 가속도 주는 함수 IncrementTowards sign 함수로 음수인지 양수인지 검사후 n에 가속도를 주어서 더해줌
Trackback 0 And Comment 0

버튼 다운로드 사이트

|

http://www.button-download.com/

Trackback 0 And Comment 0

Vector3.Slerp 두 벡터 사이의 곡선 이동

|


두 벡터 사이의 곡선이동

start 지점과 end 지점중 하나의 좌표가 0,0,0 이면 그냥 직선이동을 하는것 같다.

그래서 아래 함수 처럼 센터를 구한다음 센터의 값을빼고  다시 더해주는식으로 무조건 곡선이동을 할수 있게 하는듯.

선형보간법이라는게 참 어렵다..




Vector3.Slerp


static Vector3 Slerp(Vector3 fromVector3 to, float t);
Description

Spherically interpolates between two vectors.

Interpolates between from and to by amount t. The difference between this and linear interpolation (aka, "lerp") is that the vectors are treated as directions rather than points in space. The direction of the returned vector is interpolated by the angle and its magnitude is interpolated between the magnitudes of from and to.

t is clamped between [0...1]. See Also: Lerp function.
using UnityEngine;
using System.Collections;

public class Example : MonoBehaviour {
    public Transform sunrise;
    public Transform sunset;
    public float journeyTime = 1.0F;
    private float startTime;
    void Start() {
        startTime = Time.time;
    }
    void Update() {
        Vector3 center = (sunrise.position + sunset.position) * 0.5F;
        center -= new Vector3(0, 1, 0);
        Vector3 riseRelCenter = sunrise.position - center;
        Vector3 setRelCenter = sunset.position - center;
        float fracComplete = (Time.time - startTime) / journeyTime;
        transform.position = Vector3.Slerp(riseRelCenter, setRelCenter, fracComplete);
        transform.position += center;
    }
}


Trackback 0 And Comment 1
  1. BlogIcon 2 2015.05.27 09:21 address edit & del reply

    대단하군요

자식오브젝트에서 부모 오브젝트 스크립트 실행

|


OnTriggerEnter 는 충돌이 일어날때 발생되는 함수
OnTriggerExit 는 해당 충돌한 물체와 충돌에서 벗어날때 발생하는 함수

OnTriggerEnter 가 발생하기 위해서는 해당물체중 하나는 Rigidboyd 가 추가 되어야만함
Gem 프리팹에 리지드바드 추가후 충돌이 제대로 일어나는지 판단.
충돌이 일어나면 Feeler 에서 Gem 스크립트의 함수를 호출해서 주변 큐브의 정보를 더하고 빼주는 로직을 실행한다.

충돌 발생시 보통 태그나 변수값등을 지정해서 구분해주는데. 현재는 태그값으로 지정해서 구분해줌

박스 콜라이더 옵션중에서는 튕기는 옵션중에 공 처럼 튕긴다던가 뭐 여러가지 튕기는 옵션이있음
Physical Material 에 따라 여러가지 상황이 발생할수있슴.

유니티에서 기본적으로 제공하는 Bouncy 메트리얼을 추가해주면 공처럼 튕김.
Rigidbody 추가시 물리 효과에 따라서 x,y,z 축은 고정해주는 옵션이 있음
Constraints 에서 y를 제외한 나머지는 다 체크해주면 2D 게임에 적합하게 됨.


Trackback 0 And Comment 0

OnMouseDown 및 List 활용한 이웃 블록 저장.

|

Board 스크립트 수정 List -> GameObject 에서 Gem 으로 수정 Gem 스크립트 저장

Gem 스크립트 OnMouseDown 으로 오브젝트의 마우스 클릭 판단가능

Gem 스크립트 Neighbors로 상하좌우 블록 저장

Gem 스크립트의 상하좌우에 박스 콜라이더 생성후 충돌시  List에 저장

Gem 오브젝트에 Feeler 큐브를 자식으로 놓고 스케일을 1, 0.2, 0.2 로 만들어 길쭉한 형태로 만들고 상하좌우에 붙인다.
 
그리고 큐브 메시필터와   메쉬 렌더러 삭제후 박스 콜라이더에는 isTrigger 온으로 설정한다.









Trackback 0 And Comment 0

큐브를 사용해서 커다란 보드 만들기.

|






빈게임 오브젝트 Board 에 위 스크립트 할당 

큐브로 만든 Gem 프리팹 할당





Trackback 0 And Comment 0