Post

Window-네비게이션 있음

floow 선택 후 Inspector에서 이름옆에 static 아래 표시 거기에 네비게이션 클릭 후

네이게이션 탭에 Bale 에 가서 Bake하면 파란색맵이 된다.

캐릭터엔 Nav Mesh Agent 컴포넌트 추가


Obstancle Avoidance

Radius : 네비게이션 물체 크기

Height : 네비게이션 물체 길이


만약 벽이 있다면

벽과 캐릭터 전부 네비게이션을 추가한다( static 아래 네비 클릭 후 네비창으로 가서 clear-bake )

* 네비게이션 설정 바꿀 때마다 Bake를 해야한다..


총알에 Trail Rendere를 붙인다


파티클 시스템

Hierachy에서 Create - ParticleSystem클릭

생성한 ParticalSystem에 머테리얼을 넣으면 그 이미지로 적용된다. (Shader를 Particles/Additive로 해야 2d 이미지 배경 사라진


다)

Post

https://www.ip-tracker.org/

출발지 ip를 와이어샤크에서 확인 후 위 사이트에서 찾으면 어디쯤있는지 알 수 있다.

하지만 ip주소를 중간에서 바꿔주면 확인이 어렵다.


ip주소 추적

메일을 이용하여 ip 추적하는 법

메일의 경우 '원문보기' 라는 버튼을 누르면 더 많은 내용을 볼 수 있다.

여러 메일 서버를 거치기 때문에 전송과정이 추가적으로 붙는다.

메일 내용으로 n차 메일 서버 정보... 2차 메일서버 정보, 1차 메일서버 정보, 원문 순이다.


Post

Prepba생성

이름 CharacterPrefab

Prefeb : 내가 만든것형태로 저장

Prefab : 내가 수정한 것을 원본에 적용 > Apply, 진하게 되어있으면 apply해도 링크가 깨져서 안바뀜.Revert은 원본 형태로 


바뀜.select는 원본 설정.


총알만들 때 캡슐모양 초록색 Inspector에서삭제함


rigidbody : 물리적인 특성

Mass : 질량

Drag : 저항

Angular Drag : 회전 저항

kinemaic : 물리적 특징이 있으나 영향x

Free : 움직이고싶지 않은 축 얼림


* 프로젝트가 하는일은 프로젝트가..


바닥에서 떨어짐.


물리연산(Rigidbody)과 충돌연산(Colider)은 다름

=>바닥에 boxColider추가해서 안떨어짐

캡슐 콜라이더가 더 속도가 빠름..


물리적 질감을 줄수 있다

Physics Meterial

Dynabic : 움직일 때 멈추려는 힘 동적

Static : 정지해있다 움직일 때 저항

Bounc : 튕김



관통샷하는법?

fps게임에서 나의 아군 너머 적을 죽이고 싶은 경우가 있다.

총알을 isTrigger를 체크하고 

void OnTriggerEnter(Collider coll) 함수 호출 시 총알Tag 인지 체크하고 총알을 삭제



 : Trigger형태로 바꿈(isTrigger)


둘다 트리거가 아니면 CollisionEnter로 들어온다 (물리적인 충돌 체크)

둘 중 하나라도 트리거 체크가 되어있으면 OnTriggerEnter ( 그래서 Trigger가 더 많이 쓰인다 )

(논리적인 충돌 체크)




총알 생성 위치 GameObject


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Laucher : MonoBehaviour {
 
    public GameObject prefabProjectiel;
 
    // Use this for initialization
    void Start ()
    {
        
    }
    
    // Update is called once per frame
    void Update ()
    {
        if( Input.GetButtonDown("Jump"))
        {
            GameObject go = Instantiate (prefabProjectiel);
            go.transform.position = transform.position;
            go.transform.rotation = transform.rotation;
        }        
    }
}
 
cs


Post

hosts파일이란?

DNS가 만들어지기 전에 로컬에서 별명을 설정해서, IP대신 별명으로 인터넷에 접속할 수 있도록 만든 것.

DNS 서버가 작동하지 않을 때 임의로 사용. 또 악성코드로 주소를 임의로 등록하여 사용자가 원하는 사이트가 아닌

다른 사이트로 연결되게 할 수도 있다.

hosts파일 위치 : C:\Window\system32\drivers\etc\hosts 


hosts에 별명추가하고 작동확인

hosts파일에 ip , 도메인, 별명 을 차례로 추가한다.

cmd를 열어 ping ip , ping 별명을 치면 동일한 ip에 패킷을 전송하는 것을 확인할 수 있다.

또 홈페이지에서 http://별명 으로 쳐도 홈페이지에 접속할 수 있다.


125.209.222.142 www.naver.com nnnn


나는 네이버, 구글로 해봤는데.. ping ip든 ping 별명이든 요청시간 만료:Q.... 



DNS란?

숫자 IP주소를 문자로된 이름으로 사용하는 시스템이다.

DNS 이름은 다음으로 나뉜다

루트 도메인

최상위 레벨 도메인 : com, org, kr, jp

2계층 레벨 도메인 : google(희망문자열 선택), isc2, co. or

3계층 레벨 도메인 : (희망 문자열 선택)

4걔층 레벨 도메인 : www


DNS 서버 설정

제어판 - 네트워크 및 공유센터 - 이더넷 - 어댑터 설정 변경

DNS 자동으로 IP 주소받기 시 DNS 서버가 꺼져있다면 IP할당이 되지 않는 단점이 있다.


우리집에는 '자동으로 IP 주소 받기'가 되어있길래 다음 IP주소 사용으로

임의의 IP 입력 후 ipconfig로 ip 주소를 확인하였으나 자동으로 받은 IP주소와 같았다..

찾아보니 대역대 설정도 해야한다는데 좀 더 공부한 뒤에 다시 해보자


클라이언트가 임의의 홈페이지에 접속하는 과정은 아래와 같다.

임의 사이트 ip 주소가 캐시에 남아있는가?->없다면 hosts파일 참조->없다면 로컬 DNS 서버에 문의

->없다면 루트 DNS 서버에 문의->없다면 com DNS서버에 문의..


ipcofnig /displaydns : 이미 조회한 DNS 정보 보기 명령어

ipconfig / flushdns  : 캐시된 DNS 정보 지우기


DNS 서버 도메인 별 정리

주 DNS 서버 : 도메인의 중심 DNS 서버

부 DNS 서버 : 주 DNS 서버의 백업 서버

캐시 DNS 서버 : 주 DNS 서버와 부 DNS 서버에 대한 접속이 불가능할 때를 대비한 임시 DNS 서버

Post

dhcp 란 ? ip, 네임 서버, 게이트웨이 자동으로 할당해주는 프로토콜 ( Dynamic Host Configuration Protocol )
dhcp 서버가 꺼지면 그 이전에 ip할당받은 컴퓨터는 사용가능하지만
ip 할당받지 못한 컴퓨터(늦게 접속한 컴퓨터)는 서버 접속이 안된다.

Post

프로토콜이란? 두 컴퓨터가 통신을 위해 정한 규약.
프로토콜의 3가지 요소
구문 : 데이터 구조나 포맷 ( 앞에서부터 4비트까지는 주소.. 그 후 8비트는 데이터.. 이런식으로 어떤정보를 포함하는지)
의미 : 전송되는 데이터의 각 부분이 무엇을 뜻하는지 알 수 있게 미리 정해둔 규칙 ( 앞에서 부터 4비트가 1111일 때 어떤의미인지)
순서

프로토콜의 기능
종류별로 제공하는 기능이 다르지만, 공통적으로 다음과 같은 것을 제공
주소설정, 순서제어, 데이터 대열의 단편화 및 재조합, 캡슐화 등등..

SSL Protocol ? 서버와 클라이언트가 보안을 위해 사용하느 프로토콜.
ICMP Protocol ? 인터넷 제어 메시지 프로토콜.
QUIC Protocol ? 크롬이 사용하는 프로토콜.



Route

내 Pc Route 확인

cmd창에서 rount PRINT

활설경로 (NetworkDestination)이 0.0.0.0일 경우 

라우팅 테이블에서 직접 구체적으로 지정한 주소 외의 모든 목적지 주소는 인터페이스를 통해 게이트웨이 주소로 보내라는 의미.


Route 라인 동작 실험

cmd창에서 tracert 200.200.200.200 ICMP 프로토콜로 패킷 전송



Post

C3867 비표준 구문입니다. &를 사용하여 멤버 포인터를 만드세요

함수 호출하는데 () 괄호를 안넣음.

괄호넣으니 해결

Post

using System.Collections;

using System.Collections.Generic;

using UnityEngine;


//public class NewBehaviourScript : MonoBehaviour {


    public class MoveScript : MonoBehaviour

    {

        public float moveSpeed = 2.0f;


        public float rotSpeed = 2.0f;


        Vector3 posTarget;




        void Awake()


        {


            //moveSpeed = 10.0f;


            posTarget = new Vector3();


        }




        // Use this for initialization


        void Start()


        {


            posTarget = transform.position;


        }




        // Update is called once per frame


        void Update()


        {


            // 느린컴퓨터는 Update에 느리게 들어오고 빠른컴퓨터는 빠르다...속도를 동일하게 하기위해


            // 시간계념이 필요함 (deltaTime)




            bool trans = false;


            if (trans)


            {


                float mx = Input.GetAxis("Horizontal"); // -1 ~ 1;


                transform.Rotate(Vector3.up * mx * Time.deltaTime * rotSpeed);


            }


            else


            {




                float mz = Input.GetAxis("Vertical"); // -1 ~ 1;


                float mx = Input.GetAxis("Horizontal"); // -1 ~ 1;




                Vector3 v = new Vector3(mx, 0, mz);


                v.Normalize(); // 원본 변경


                //v.Normalized(); // 원본 변경x


                transform.Translate(v * Time.deltaTime * moveSpeed);




                transform.Rotate(Vector3.up * mx * Time.deltaTime * rotSpeed);


                //transform.Translate(Vector3.forward * mz * Time.deltaTime * moveSpeed);


                //transform.Translate(Vector3.right * mx * Time.deltaTime * moveSpeed);




                // 마우스로 좌표찍어서 이동


                if (Input.GetButtonDown("Fire1"))


                {


                    Ray r = Camera.main.ScreenPointToRay(Input.mousePosition);


                    RaycastHit hit;


                    if (Physics.Raycast(r, out hit))


                    {


                        posTarget = hit.point;


                        Debug.Log(hit.transform.gameObject);


                        // 방향을 돌린다


                        //transform.LookAt (new Vector3(posTarget.x, 0, 0));


                        //transform.LookAt (posTarget);


                    }


                }




            }


            // 선형보간 이동


            //transform.position = Vector3.Lerp (transform.position, posTarget, Time.deltaTime * moveSpeed);


            // 정규속도로 가기


            if (Vector3.Distance(transform.position, posTarget) >= 0.1f)


            {


                Vector3 dir = posTarget - transform.position;


                // 부드럽게 방향 돌림


                // 나의 앞 방향과 목표 방향과 normallize해서 어느정도 이동해야하는지 결과값이 나옴


                Vector3 look = Vector3.Slerp(transform.forward, dir.normalized, Time.deltaTime * rotSpeed);


                // up y축 회전


                transform.rotation = Quaternion.LookRotation(look, Vector3.up);


                transform.position = Vector3.MoveTowards(transform.position, posTarget, Time.deltaTime * moveSpeed);

            }


        }




        void OnGUI()

        {


            // 방향키 앞뒤 누를 시 -1 ~ 1의 을 출력


            GUI.Label(new Rect(0, 0, 150, 40), Input.GetAxis("Vertical").ToString());


        }


    }

//}



'이전게시판 > Unity' 카테고리의 다른 글

유니티 2D충돌체크, 코루틴  (0) 2018.04.29
유니티 스프라이트2D  (0) 2018.04.28
유니티 네비게이션, 파티클  (0) 2018.04.22
총알 만들고 쏘기(Prepfeb)  (0) 2018.04.21
Unity 기초 정리  (0) 2018.04.14
유니티 C# Scene 변경  (0) 2018.04.14
UGUI 캔버스, UI 정리  (0) 2017.10.11
유니티 UGUI 버튼 예제  (0) 2017.10.08

Post

[ 유니티 창 설명 ]

Componet : 기능을 넣어주는 것 ( 스크립트, Mesh 등 ... )

Game창에서 해상도 설정 가능 ( Portain 가로 , Landscap 세로 )

+ 누르면 해상도 지정 가능(Fixed Rsolution ), 종횡비(Aspect Resolution)

Hiarchy : Scene에 있는 작업물 ( Scene에서 보이는 것들 )

Project : Project의 모든 작업물 객체 모음

Inspect : 정보와 수정을 담당

States => 작업상황 (퍼포먼스 확인)


[ 안드로이드 빌드 시 필요한 것 ]

SDK, JDK, 때때로 NDK 설치 Extern Tool 에서 설치 위치 설정할 수 있음.


[에셋 가져오기, 불러오기]

Asset - Item to Export => 에셋 단위로 묶을 수 있음.

가져오기는 마우스 드래그로 가져오기 가능


[ Object 이동 ]

Object생성 시 반드시 reset할 것 (위치 초기화 필요)

X, Y, Z는 꼬치구이 돌리는 것 처럼 생각할 것


Q : 화면 움직이기

W : 이동

E : 회전

R : 늘리기, 줄이기

T : 2D에만 쓰임


Pivot :  두개 이상 모체 선택 시 처음 선택한 오브젝트 중심으로 이동, 회전

Global과 Local : Local말고 Global로 World 좌표계 사용하고 싶을 때 사용.



[ ProjectSetting ]

유니티에서 mouse 0 => left 1 => right 2 => 휠


[ 2D ]

2d스프라이트 SortLayer, Order in Layer 사용법 :숫자가 낮을수록 먼저 그림(맨 뒤로 가게됨)

Flip는 x, y 를 체크해서 방향을 바꾸면 방향축이 안바뀜(그냥 Y축 회전하면 방향이 바뀌게 된다)

Post

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneCtrl_Test : MonoBehaviour {
// Use this for initializatio
void Start () {


}
// Update is called once per frame
void Update () {
}
void OnGUI()
{
if (GUI.Button (new Rect (0, 0, 100, 30), "Scene 이동"))
{
// TestScene으로 이동
//SceneManager.LoadScene ("OneDayScene");
// TestSceen 붙이기
SceneManager.LoadSceneAsync("TestScene", LoadSceneMode.Additive);
}
}
}

1. 메뉴에서 File -Build Scene 선택. Scene을 넣어줌(마우스 드래그)
2. Script를 만들어서 위와 같이 작성
3. 빈 Object를 생성해 스크립트를 넣음
4. 실행하면 멀티뷰(주석은 TestScene으로 이동)가 됨.


▲ top