●리지드 바디(RigidBody) 추가하기

- Plane오브젝트와 Cube오브젝트를 만들고 Cube오브젝트를 클릭한 상태에서 아래 그림처럼 RigidBody를 선택한다. 그리고 나서 ▶(플레이버튼)을 누르면 Cube가 아래로 떨어진다.

 

 

 

 

 

 

●RigidBody란 오브젝트에 물리적인 특성을 부여하는 컴포넌트이다. 외부에서 힘을 주어 이동시키는 오브젝트는 반드시 리지드바디 컴포넌트를 추가해야한다.

 

 

 

 

 

Mass - 질량. 질량이 작을수록 더 빨리 움직이고, 더 멀리 움직인다.

Drag - 저항. 이 값이 크면 속도가 떨어진다.

Angular Drag - 회원 운동 저항. 이 값이 0이면 한없이 굴러간다.

Use Gravity - 중력 사용 여부

Is Kinematic - 관절 운동 처리 여부

Collision Detection - 물체의 연속적인 충돌을 검사하는 방법

 

 

 

 

 

 

 

●오브젝트의 탄성계수 설정

 

 - 프로젝트 탭에서 우클릭->Import Package->Physic Materials 선택후 Import한다.

 

 

 

 

- Cube의 인스펙터에서 Bollider 부분의 Material 오른쪽 끝에 동그란 아이콘을 누른다. 그리고나서 원하는 Material을 선택한다.

 

 

 

 

 

 

Posted by -현's-

댓글을 달아 주세요

 

●디자인 탭에서의 마우스 버튼

 

- 왼쪽 버튼 - 게임 오브젝트 선택

 

- 오른쪽 버튼 - 화면 회원

 

- 마우스 휠 - 화면 확대/축소

 

- 휠 드래그 - 화면 이동

 

- alt+왼쪽버튼 - 화면 회전

 

- alt+오른쪽버튼 - 줌인/줌아웃

 

 

 

 

 

●File 메뉴

 

- Ctrl+N - 새 Scene 만들기

 

- Ctrl+O - Scene 열기

 

- Ctrl+S - Scene 저장

 

- Ctrl+Shift+S - 새 이름으로 Scene 저장

 

- Ctrl+Shift+B - Build 설정

 

- Ctrl+B - Build+Run

 

- Alt+F4 - 유니티 종료

 

 

 

 

●Edit 메뉴

 

- Ctrl+C/X/Y - 복사/잘라내기/붙여내기

 

- Ctrl+Z - 실행 취소

 

- Ctrl+Y - 되돌리기

 

- Ctrl+D - 오브젝트 복제

 

- Shift+Delete - 삭제

 

- F - 선택한 오브젝트 중앙 배치(하이어라키에서 오브젝트 선택후 커서를 디자인탭에 두고 F를 누른다.)

 

- Ctrl+F - 오브젝트 찾기

 

- Ctrl+A - 전체선택

 

- Ctrl+P - 게임 실행

 

- Ctrl+Shift+P - 게임 일시 정지

 

- Ctrl+Alt+P - 1단계씩 실행

 

 

 

 

 

●Assets 메뉴

 

- Ctrl+R - - 에셋 다시 읽기

 

 

 

 

 

●창/탭 이동

 

- Ctrl+1 - 디자인 탭으로 이동

 

- Ctrl+2 - 게임 창으로 이동

 

- Ctrl+3 - 인스펙터 탭으로 이동

 

- Ctrl+4 - 하이어라키 탭으로 이동

 

- Ctrl+5 - 프로젝트 탭으로 이동

 

- Ctrl+6 - 애니메이션 창 호출

 

- Ctrl+7 - 프로파일러 창 호출

 

- Ctrl+9 - 애셋 스토어 호출

 

- Ctrl+0 - 애셋 서버 호출

 

- Ctrl+Shift+C - 콘솔 창 호출

 

- Ctrl+좌우 - 다음 창으로 이동

 

- Ctrl+Shift+좌우 - 작전창으로 이동

 

 

 

 

●디자인 탭의 도구 버튼

 

- Q - 화면이동 선택

 

- W - 오브젝트 이동 선택됨

 

- E - 오브젝트 회원 선택됨

 

- R - 오브젝트 스케일 선택됨

 

- Z - Pivot/Center

 

- X - Local/Global

 

- V - 버텍스 스냅

 

 

 

 

●오브젝트 선택

 

- Ctrl+Alt+1~9 - 선택한 오브젝트 그룹화

 

- Ctrl+Shift+1~9 - 그룹화한 오브젝트 호출

 

 

 

 

 

Posted by -현's-

댓글을 달아 주세요

  1. Favicon of https://chocotart.tistory.com ChocoTart  댓글주소 수정/삭제 댓글쓰기 2014.05.16 13:19 신고

    몰르던 단축키 가 많네요~
    제 블로그에 퍼가고 싶은대 괜찮나요?
    괜찮으시 다면 퍼가는 방법이 따로잇는건가요?
    없다면 내용만 카피 해 가고
    출처를 남길게요~

 

●하이어라 키

- 디자인 탭에서 만든 오브젝틀르 계층 구조로 표시하는 곳이다.

하이어라키 상단의 'create'는 'GameObject->Create Other'메뉴와 같은 기능을 한다.

하이어라키에서 오브젝트를 선택한후 'F'키를 누르면 선택한 오브젝트가 디자인 탭의 중앙에 나타난다.

 

 

 

 

 

 

 

 

●프로젝트 탭

- 현재의 프로젝트에서 사용하고 있는 각종 리소스를 표시한다.

 

 

 

 

 

 

 

 

 

●인스펙터

- 오브젝트에 대한 세부 정보를 표시하고 변경할 수 있는 곳이다.

 

 

 

 

 

 

 

Posted by -현's-

댓글을 달아 주세요

 

●도형을 얼굴라인쪽으로 이동시켜주고 'Selection'의 Vertex서브오브젝트를 선택하여 크기를 작게 만든다.

 

 

 

 

 

 

 

●상단 옆의 빈곳을 우클릭 한 후 'Axis Constrains'를 누르면 x,y,z를 선택할 수 있는 창이 뜬다. 뷰포트에서 x,y,z축을 선택할 수 있지만 여기서 선택하는게 더 편하다.

 

 

 

 

 

 

 

●프론트 뷰포트에서 사각형을 선택한 후 'Edge'버튼을 누른다.

그리고 프론트 뷰보트에서 사각형의 아래 모서리를 선택 후 y축을 누르고 shift버튼을 누르고 적당한 길이로 당긴다.

그 다음 z축을 누르고 레프트 뷰포트로 가서 z축을 조정하여 얼굴 옆 라인에 따라 맞춘다. 이런식으로 얼굴 옆 라인을 그린다.

 

 

 

 

 

 

 

●Vertex서브 오브젝트를 선택한 후 프론트 뷰포트에서 적당한 크리고 맞춰준다.

 

 

 

 

 

 

 

●Vertex 서브 오브젝트 창에서 밑으로 내려가면 다음 화며닝 나온다. 'USE NURMS Subdivision'을 선택한다.

그리고 아래 숫자를 0으로 설정한다. 그러면 노란선이 표시되어 모델링 하기 더 편해진다.

 

 

 

 

 

 

 

 

 

●얼굴 모델링의 기준을 잡기 위해 쓰였던 이미지는 선택 후 삭제해 준다.

 

 

 

 

 

 

●Vertex 서브 오브젝트, Edge 서브오브젝트를 왔다갔다 하면서 모서리를 shift누르고 드래그 해서 복사하고 위치 설정하면서 원하는 모양의 캐릭터를 완성한다.

 

 

 

 

 

 

 

'디자인 > 3D Max' 카테고리의 다른 글

3d max 캐릭터 머리 그리기2  (0) 2012.07.25
3d max 캐릭터 머리 그리기1  (0) 2012.07.23
3d max 단축키  (0) 2012.07.20
3d max UI 인터페이스  (0) 2012.07.19
Posted by -현's-

댓글을 달아 주세요

3d max 단축키

디자인/3D Max 2012. 7. 20. 22:42

 

●(계속 추가중)

 

 

 

 

●제일 많이 쓰이고 기본이 되는 단축키이다.

Q - 오브젝트 선택모드

W - 오브젝트 이동

E - 오브젝트 회원

R - 오브젝트 크기조절

 

 

 

 

 

 

●M - Material Editor 단축키

 

 

 

 

 

●G - 기즈모 보이기/감추기 단축키

 

 

 

 

 

'디자인 > 3D Max' 카테고리의 다른 글

3d max 캐릭터 머리 그리기2  (0) 2012.07.25
3d max 캐릭터 머리 그리기1  (0) 2012.07.23
3d max 단축키  (0) 2012.07.20
3d max UI 인터페이스  (0) 2012.07.19
Posted by -현's-

댓글을 달아 주세요


●추상클래스 - 추상메서드를 가진 클래스이다.
●추상메서드 - 처리를 명시하지 않고 호출한 쪽만 정의한 메서드
ex)
abstract class A{
   public abstract void Add();   // '{}'안쓰고 ';'으로 끝난다.
}



●추상클래스를 상속하여 객체를 생성하려면 다음과 같이 override붙인 멤버를 준비한다.
ex)
abstract class A{
   public abstract void add();
}
class B : A{
   public override void add(){
         ~~
   }
}




●인터페이스 - 추상메서드, 추상속성, 추상인덱서, 이벤트만 멤버로 가질 수 있다.
ex)
interface A{
   public abstract void a();
   public abstract int b{
      get;
      set;
  }
}
class B : A{
   public void a(){
       ~~
   }
   public int prop{
          get{
               return b;
         }
         set{
              b=value;
         }
    }
}



●인터페이스의 정의에서 모든 메서드는 public로 취급하므로 엑세스 수식자는 생략할 수 있다.
ex)
interface A{
    void a();
    int b{
      get;
      set;
   }
}



●인터페이스는 여러개 받을 수 있다.
ex)
class X : A, B, C{
    ~~
}


●인터페이스의 상속 - 인터페이스도 클래스처럼 상속하여 새 인터페이스를 만들 수 있다.
ex)
interface A{
    ~~
}
interface B : A{
    ~~
}



●터페이스는 여러개 상속가능하다.
ex)
interface X : A, B, C{
   ~~
}


●상속원본의 인터페이스와 상속대상의 인터페이스에 각각 같은 멤버가 있을 경우 상속대상의 추상멤버에 new를 붙인다. new 안 붙이면 경고 발생
ex)
interface A{
   void e();
   void f();
}
interface B : A{
   void a();
   new e();
}



●object클래스 - 모든 클래스의 기본이 되는 클래스이다. 모든 클래스는 object클래스를 상속하고 있다.



●박스화(boxing) - 값형의 데이터를 객체형 변수에 대입하는 것
ex)
int a = 10;
object obj;
obj = a;



●박스화 해제 - 객체형의 데이터를 값형에 대입하는 것, 형을 명확히 하기 위해 형변환 사용
ex)
object obj = 10;
int b = (int)obj;



●네임스페이스 - 같은 이름의 클래스 등이 경합을 일으키지 않도록 할 수 있게 한다.
ex)
namespace A{
    class Abc{
          ~~
   }
}



●네임스페이스 안에 속해 있는 클래스를 참조하려면 '.' 사용
ex)
A.abc;



●네임스페이스 안에 네임스페이스를 만들 수 있다.
ex)
namespace A{
   namespace B{
        ~~
   }
}

namespace A{
       ~~
}
namespace A.B{
      ~~
}


'프로그래밍 > C#' 카테고리의 다른 글

c# 기본 문법 정리5  (0) 2012.03.08
c# 기본 문법 정리4  (0) 2012.03.08
c# 기본 문법 정리3  (0) 2012.03.07
c# 기본 문법 정리2  (0) 2012.03.07
c# 기본 문법 정리1  (0) 2012.03.04
Posted by -현's-

댓글을 달아 주세요


●속성 - 객체 안에 있는 필드의 값을 취득 또는 설정하는 메서드이다. 필드를 반환하는 get엑세서와 필드에 값을 대입하는 set엑세서로 구성된다. 자바에서 setter, getter랑 비슷한 개념이다
ex)
usting System;
class A{
    public int a;
    public int sok{
          get{
          return a;
          }
          set{
          a=value;
          }
      }
}

A a=new A();
a.sok = 3;              //따로 set, get을 표시하지 않고 그냥 입력 or 출력하면 된다.
Console.Write(a.sok);



●인덱서(indexer) - 객체를 배열처럼 취급하고자 할 때 사용한다. 속성과 같이 get, set으로 구성
ex)
using System;
class A{
    int []a = new int[4];
    public int this[int i]{
        get{
        return a[i];
       }
        set{
        a[i]=value;
       }
    }
}

A a = new A();
a[0]=1;
a[1]=2;
a[2]=3;
a[3]=4;
for(int i=0; i<=3; i++){
  Console.Write(a[i]);
}



●상속 - ' :부모클래스명'을 붙인다
ex)
class A{
   ~~
}
class B : A{
   ~~
}



●sealed - 상속되지 않도록 할 클래스는 sealed를 사용하여 봉인한다.
ex)
sealed class A{
   ~~
}



●클래스를 상속했을 때 부모클래스와 자식클래스 각각에 생성자가 있는 경우 부모클래스로부터 차레로 생성자가 작동한다.




●기본 클래스의 생성자를 호출
- 상속한 생성자에 인수가 있는 경우에는 다음과 같이 base를 이용하여 상속원본에 인수를 전달
ex)
using System;
class A{
   public int x;
   public A(int a, int b){
       x=a+b;
   }
]
class B : A{
   public B(int c, int d) : base(c, d){}
}



●이름 은폐
- 자식 클래스의 멤버에 부모클래스의 멤버와 같은 이름을 붙이고자 할 경우에는 멤버의 정의 앞에 'new'를 붙인다.
여기서 new는 객체생성시 사용하는 new랑 다르다. new가 붙은 멤버를 호출하면 자식클래스 쪽의 멤버가 호출된다.
ex)
class A{
   public int a=10;
}
class B : A{
   new public int a=30;
}



●base - 이름이 은폐된 부모클래스의 멤버를 자식클래스안에서 사용할 때 사용
ex)
using System;
class A{
   public int a=3;
}
class B : A{
   new public int a=100;
   public void print(){
      Console.WriteLine(base.a);
   }
}



●오버라이드
 -상속한 메서드와 같은 이름, 같은 인수, 같은 반환값을 가지는 메서드를 해서 덮어 쓰는것. 오버라이드 되는 메소드에는 'virtual' 키워드를 붙이고 오버라이드 한 메소드에는 'override' 키워드를 붙인다
ex)
class A{
   public virtual void bye(){
      ~~
}}
class B : A{
   public override void bye(){
      ~
}}


'프로그래밍 > C#' 카테고리의 다른 글

c# 기본 문법 정리5  (0) 2012.03.08
c# 기본 문법 정리4  (0) 2012.03.08
c# 기본 문법 정리3  (0) 2012.03.07
c# 기본 문법 정리2  (0) 2012.03.07
c# 기본 문법 정리1  (0) 2012.03.04
Posted by -현's-

댓글을 달아 주세요


●c언어에서는 배열사이즈를 정의할 때 상수선언을 #define으로 했지만, c++에서는 const로 할 수 있다.
가능한 const를 사용하는게 좋다
ex)
c언어
 #define B 10             
int main(){
   int b[B];
}

c++
 int main(){
    const int B;
    int b[B];
}




●함수의 디폴트 인수 설정 - 거의 매번 같은 값을 가지지만 가끔씩 변경해야할 경우에 사용하면 편리
ex)
프로토 타입에서 설정
double A( int a=1, double b=3.1);

함수 정의에서 설정
 double A( int a=1, int b=3.1){
  ~~
}



●디폴트 인수 설정된 함수 호출
ex)
double area;
area=A();                //아무 것도 없으면 디폴트인수로 된다
area=A(10);             //첫번째 인수부터 채워진다. 첫번째 인수는 10, 두번째 인수는 디폴트 인수로 된다
area=A(10, 3.11);     //첫번째 두번째 인수는 10, 두번째 인수는 3.11이다



●디폴트 인수 설정시 주의점
- 디폴트 인수는 마지막 인수부터 차례로 설정해야함. 첫번째 인수에만 디폴트 설정하면 컴파일 에러 발생
ex)
double A(int a, int b=1);     //(O)
double B(int a=1, int b);     //(X), 컴파일 에러발생



●오버로딩
- 인수의 형이나 개수가 다르고 동일한 이름의 함수를 여러개 정의한것.
단, 반환형의 형만 다른 함수는 오버로딩할 수 없다.




●표준 출력 스트림 - std::cout
ex)
#include <iostream>
int a;
std::cout<<"Hello"<<"World"<<a<<std:endl;



●표준 입력 스트립 - std::cin
ex)
#include <iostream>
int a;
std::cin>>a;




●스코프 연산자('::')
- 로컬 변수와 클로벌 변수의 이름이 같을 경우 함수안에서는 로컬변수가 우선하지만
스코프연산자를 사용하면 글로벌 변수를 우선시킬 수 있다.
스코프연산자 앞에 클래스명을 붙이면 오브젝트 내의 멤버를 우선시킬 수 있다.
ex)
::a
A::a




●namespace(이름공간)
- namespace 내의 변수와 함수를 이용하기 위해서는 ' namespace명::함수명이나변수명이나클래스명'을 기술한다.
매번 'namespace::'라고 기술하는 것이 번거롭기 때문에 'using namespace 이름공간명;"을 기술하면 편하다


●namespace std
- std::cout나 std::cin은 std라는 이름공간에 있기 때문에 'using namespace std;'를 기술하면 그냥 cout, cin써도 된다.



●인라인 함수
- 함수에 'inline' 붙이면 컴파일러는 호출하는 곳으로 함수의 정의를 복사해서 넣는다. 인수를 복사하거나 함수를 호출하는 처리가 생략되므로 실행속가 빨라진다. 그러나 코드가 중복되는 만큼 프로그램의 사이즈는 커지기 때문에 모조건 인라인 함수가 좋은 것은 아니다. 주로 처리 내용이 작은 함수나 호출 횟수가 많은 함수를 인라인으로 하면 좋다.
ex)
inline int A(int a, int b){
   return a+b;
}


'프로그래밍 > c++' 카테고리의 다른 글

c++ visual c++로 프로젝트 시작하기  (0) 2013.06.11
c++ 폴더안에 있는 헤더파일 include  (0) 2013.05.26
c++ 기본 문법 정리4  (0) 2012.02.17
c++ 기본 문법 정리3  (0) 2012.02.17
c++ 기본 문법 정리2  (0) 2012.02.16
c++ 기본 문법 정리1  (0) 2012.02.16
Posted by -현's-

댓글을 달아 주세요


●c++은 객체지향 프로그래밍 언어이다



●확장자는 '.cpp' 사용



●c++ 기본구조
ex)
#include <iostream>
int main(){
  std::cout<<"hello world\n";
  return 0;
}



●구조체 - 여러개의 변수를 하나로 묶은것
   클래스 - 변수와 함수를 하나로 묶은것




●오브젝트(object)
-클래스는 변수의 자료형과 같은 것으로 그 자체로는 값을 저장할수 없다. 오브젝트는 클래스를 바탕으로 값을 저장할 수 있는 실체이자




●클래스의 정의
ex)
class Aaa{
   public:                           //접근 제한자 뒤에 ':(콜론)''붙임, 접근제한자 생략하면 모든 멤버는 private가 된다
      void Add(int a);            //클래스 외부에 함수 정의
      int Del(int b){               //클래스 내부에 함수 정의
          return b;
      }
   int x, y;
};                                    //클래스 끝에 ';(세미콜론)' 기술

void Aaa::Add(int a){           //'클래스명::함수명'을 써서 어느 클래스의 멤버함수인지 구분
   total+=a;
}



●오브젝트(객체)의 생성
 - '클래스명 오브젝트명;'     //변수 선언과 유사하다




●같은 오브젝트 내의 멤버함수 호출 - 그냥 함수명만 기술하면 된다


●다른 오브젝트의 멤버함수를 호출 - '.(피리어드)'를 사용한다
- '오브젝트명.함수명();'




●생성자(constructor) - 오브젝트를 생성할때 자동적으로 호출되는 특수한 함수. 생성자는 public로 해야한다.
ex)
class Aaa{
   public:
      Aaa();                  //생성자는 반환값이 없고, void형 지정도 하지 않는다.
};
Aaa:Aaa(){
   total=0;
}
int main(){
   Aaa a;
}




●소멸자(destructor)
- 오브젝트가 소멸할때 호출됨. public로 해야한다. 프로그래머가 소멸자를 정의하지 않으면 디폴트로 준비도니다. 클래스 안에 하나만 정의할 수 있다. 소멸자의 선언은 '~'를 기술하여 쓴다.
ex)
class Aaa{
   public:
      Aaa();
     ~Aaa();
};
Aaa::~Aaa(){
   printf("임수 완료\n");
}




c언어에서는 블록안의 선두에서 변수를 선언해야 했지만

c++에서는 변수를 사용하기 전이라면 어디에서나 선언할 수 있다.

될수 있으면 변수선언은 사용하기 직전에 하는게 좋다



●c++에서는 for문안에 카운터를 선언할 수 있다.
ex)
for( int i=1; i<5; i++ )



'프로그래밍 > c++' 카테고리의 다른 글

c++ visual c++로 프로젝트 시작하기  (0) 2013.06.11
c++ 폴더안에 있는 헤더파일 include  (0) 2013.05.26
c++ 기본 문법 정리4  (0) 2012.02.17
c++ 기본 문법 정리3  (0) 2012.02.17
c++ 기본 문법 정리2  (0) 2012.02.16
c++ 기본 문법 정리1  (0) 2012.02.16
Posted by -현's-

댓글을 달아 주세요


●포인터 - 메모리의 주소값을 저장하기 위한 변수




&a - 변수 a의 주소값을 반환
*a - 포인터a가 가리키는 메모리를 참조



●*
- 곱셈
 ex) a*b
- 포인터 선언
ex) int *a
-포인터 접근
ex) *a


●배열 이름은 포인터 상수이다. 배열이름은 첫번재 요소의 주소값이다
ex)
int a[5]={~~~};   // 여기에서 'a'가 배열 이름이고 배열의 첫번째 요소의 주소를 저장하는 포인터이다



●문자열은 주소값으로 저장된다, 그래서 문자열선언은 배열을 만들어서 한다
ex)
chat a[5]="good";
char *str="abcd";




직접접근 - 변수를 통한 접근
간접접근 - 포인터를 이용한 접근




●구조체
ex)
struct A{
int x;
int y;
};
struct A a;  //구조체 변수 선언시 struct라는 키워드를 반드시 붙여줘야함
a.x=10;
a.y=20;


●구조체 선언과 동시에 초기화
ex)
struct person{
char name[20];
char phone[20];
int age;
};
struct person p1 = {"a", "0", 20);   //순서 중요
struct person p2 = { .age=20, .name-"a", .phone="1"};  //이방법은 순서 안 중요



●typedef - 이미 존재하는 자료형에 새로운 이름을 붙이기 위한 용도
ex)
typedef int INT;

typedef struct data DATA;


●구조체 정의와 typedef 동시에 선언
ex)
typedef struct DATA{
int a-1;
int b=2;
} DATA;



●메모리
데이터 영역 - 전역변수와 static변수가 할당되는 영역, 프로그램 시작 종료시
스택영역 - 지역변수와 매개변수가 저장되는 영역, 함수 호출 종료시
힙영역 - 프로그래머가 관리하는 영역, 동적할당시



●malloc, free - 힙에 할당,해제하는 함수, #include<stdlib.h>써야함



●배열 선언은 반드시 상수로 해야한다. 스택과 데이터영역에 할당될 메모리는 컴파일 하는 동안 결정되기 때문이다. 배열 길이를 변수로 선언하기 위해선 동적할당을 해야한다.

















Posted by -현's-

댓글을 달아 주세요