Rigidbody.velocity는 월드 좌표로만 수정가능한데.

만약 상대적인 방향으로 움직이려면


velocity를 로컬좌표로 변환하고 수정한후 월드좌표로 다시 바꿔서 넣으면 된다.



1
2
3
4
Vector3 locVel = transform.InverseTransformDirection(rig.velocity);
locVel.x = x;
locVel.z = z;
rig.velocity = transform.TransformDirection(locVel);
cs



출처 : http://answers.unity3d.com/questions/193398/velocity-relative-to-local.html

블로그 이미지

stuban

ㅇ.ㅇ

,

덱 프랑슘 프로에 하얀색 하우징을 씌워서 쓰고 있는데 

순정 검은색 키캡이 마음에 안들어서 바꿀려고 보니

키캡이 생각보다 너무 비싸서 보류하다가

G 마켓에서 저렴하게 파는데닥 색깔도 여러개고 LED투과도 되는 키캡이 있어서 질러버렸다.


http://item2.gmarket.co.kr/Item/detailview/Item.aspx?goodscode=878963661






스노우로 찍은 사진



키캡이 조금 얇아서 Led가 번지지만 밝은곳에서 보면 이렇게 예쁠 수가 없다.


'일상' 카테고리의 다른 글

작업요 추천  (0) 2017.07.19
앙 수학띠  (0) 2017.07.18
뉴 서피스 프로 광고 음악  (0) 2017.06.23
이정도면 갓스토리 인정합니다  (0) 2017.05.19
오버워치 배틀코인 카드팩 지르다  (0) 2017.05.09
블로그 이미지

stuban

ㅇ.ㅇ

,

친구가 만들었다고 하길래 나도 만들어본 사운드 매니저.


효과음이나 배경음악을 파일이름으로 재생할 수 있다.

심지어 배경음악 바꿀때 천천히 바꿀 수 도 있음 ㅎ


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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class SoundManager : MonoBehaviour {
 
    //싱글톤
    private static SoundManager instance;
    public static SoundManager GetInstance()
    {
        if (!instance)
        {
            instance = GameObject.FindObjectOfType(typeof(SoundManager)) as SoundManager;
            if (!instance)
                Debug.Log("오류");
        }
 
        return instance;
    }
 
 
    public int audioSourceCount = 3;//최대 오디오 소스 개수
 
    [SerializeField]
    [Header("clips"), Tooltip("오디오 클립들")]
    public AudioClip[] BGMs = new AudioClip[2];
    public AudioClip[] SFXs = new AudioClip[3];
 
 
    private AudioSource BGMsource;
    private AudioSource[] SFXsource;
 
    private void OnEnable ()
    {
        BGMsource = gameObject.AddComponent<AudioSource>();
        BGMsource.playOnAwake = false;
        BGMsource.loop = true;
 
        //sfx 소스 초기화
        SFXsource = new AudioSource[audioSourceCount];
 
        for(int i=0;i< SFXsource.Length; i++)
        {
            SFXsource[i] = gameObject.AddComponent<AudioSource>();
            SFXsource[i].playOnAwake = false;
        }
    }
    
    /**********SFX***********/
 
    public void PlaySFX(string name)//효과음 재생
    {
        for(int i=0;i<SFXs.Length;i++)
        {
            if(SFXs[i].name == name)
            {
                GetEmptySource().clip = SFXs[i];
                GetEmptySource().Play();
                return;
            }
        }
    }
 
    private AudioSource GetEmptySource()//비어있는 오디오 소스 반환
    {
        int lageindex = 0;
        float lageProgress = 0;
        for (int i = 0; i < SFXsource.Length; i++)
        {
            if (!SFXsource[i].isPlaying)
            {
                return SFXsource[i];
            }
 
            //만약 비어있는 오디오 소스를 못찿으면 가장 진행도가 높은 오디오 소스 반환
 
            float progress = SFXsource[i].time / SFXsource[i].clip.length;
            if(progress > lageProgress)
            {
                lageindex = i;
                lageProgress = progress;
            }
        }
        return SFXsource[lageindex];
    }
 
    /**********BGM***********/
 
    private AudioClip changeClip;//바뀌는 클립
    private bool isChanging =false;
    private float startTime;
 
 
    [SerializeField]
    [Header("Changing speed"), Tooltip("브금 바꾸는 속도")]
    public float ChangingSpeed;
 
    public void ChangeBGM(string name, bool isSmooth)//브금 변경 (브금이름 , 부드럽게 바꾸기)
    {
        changeClip = null;
        for (int i = 0; i < BGMs.Length; i++)//브금 클립 탐색
        {
            if (BGMs[i].name == name)
            {
                changeClip = BGMs[i];
            }
        }
 
        if (changeClip == null)//없으면 탈주
            return;
 
        if (isSmooth)//스무스 하게 체인지 ~
        {
            startTime = Time.time;
            isChanging = true;
        }
        else
        {
            BGMsource.clip = changeClip;
            BGMsource.Play();
        }
    }
 
    private void Update()
    {
        if (!isChanging) return;
 
        float progress = (Time.time - startTime) * ChangingSpeed;//부드러운 오디오 전환
        BGMsource.volume = Mathf.Lerp(10, progress);
 
        if(progress > 1)
        {
            isChanging = false;
            BGMsource.clip = changeClip;
            BGMsource.Play();
 
            Debug.Log("BGM CHANGE DONE!");
        }
    }
 
}
cs



사실 브금 부분은 아직 제대로 테스트 안해봤음


+ 이 소스 쓰지 마세요 ㅎㅎ

실제로 써보니깐 여러가지 문제가 있었습니다.

문제점들 수정하면 쓸만한데

쓸만하게 만들 자신 있으면 차라리 자기거 만드는게 이득입니다 ㅎ

블로그 이미지

stuban

ㅇ.ㅇ

,

SQL에서  주석은  '--' 을 써서 씀


SQL에서 대소문자 구분따위는 없음


1
CREATE DATEBASE 이름; --데이터베이스 만들기
cs


1
use Test; -- Test데이터 베이스 사용      
cs


1
2
3
4
5
6
7
--테이블 만들기
CREATE TABLE testTable (
 
Code INT--코드 int형
Title NVARCHAR(50), --타이틀 string NVARCHAR = 유니코드를 사용하는 문자
Price INT -- 가격 int
);                         
cs


1
2
3
4
5
INSERT INTO 테이블이름(Code,Title,Price) --집어넣을 테이블 이름과 자료형 명시
VALUES (123,'스트링',500);--집어넣을 자료
 
INSERT INTO 테이블이름 --열의 개수만큼 자료를 넣는다면 자료형 명시 스킵 
VALUES (123,'스트링',500);--집어넣을 자료
cs



1
2
SELECT * FROM 테이블이름; --모든 테이블 정보 보기
SELECT 원하는항목,원하는항목2 FROM 테이블이름; --원하는 열의 정보만 보기
cs



1
2
3
--테이블 수정()
ALTER TABLE 테이블이름
ADD 추가할데이터이름 데이터형 초기값;
cs


1
2
3
--테이블 수정(행제거)
ALTER TABLE 테이블이름
DROP COLUMN 행이름
cs


1
2
3
4
5
6
7
--오름차순 정렬
SELECT * FROM 테이블이름 ORDER BY 행이름 ASC;
--이것도 오름차순 
SELECT * FROM 테이블이름 ORDER BY 행이름;
 
--내림차순 정렬
SELECT * FROM 테이블이름 ORDER BY 행이름 DESC;
cs




1
DELETE 테이블이름; --테이블 삭제
cs


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

오늘 새로배운 mysql 정리  (0) 2017.10.12
sql 메모  (0) 2017.10.11
apmSetup  (0) 2017.10.11
SQL 정리 - 2 자료형들  (0) 2017.05.20
sql 정리  (0) 2017.05.17
블로그 이미지

stuban

ㅇ.ㅇ

,

sql 정리

프로그래밍/SQL 2017. 5. 17. 23:33

사실 그냥 하나씩 정리해서 마치 강의식으로 사진도 넣고 하면서 포스트를 쓸려고 했는데 블로그를 옮기니깐 너무 귀찮고 해서 그냥 글로만 쓸게요.



http://stuban.blog.me/220970484549 //처음에 올리던 SQL글

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

오늘 새로배운 mysql 정리  (0) 2017.10.12
sql 메모  (0) 2017.10.11
apmSetup  (0) 2017.10.11
SQL 정리 - 2 자료형들  (0) 2017.05.20
SQL 정리 - 1 테이블 생성과 수정  (0) 2017.05.17
블로그 이미지

stuban

ㅇ.ㅇ

,


배틀넷 오버워치 탭에 새로운 공지가 떳다.


G마켓과 콜라보한 오버워치 배틀코인 카드팩을 판다는 공지 였다.


http://promotion.gmarket.co.kr/planview/plan.asp?sid=152155




아니 만원짜리 배틀코인 * 3 개 + @ 가 배송비 없이 무려 28500원 ???????

블리자드가 똥꼬쇼를 하고 있었다.


당연히 지르지 않을 수 없는 상황이었고 나는 내통장에 남은 돈을 모두 털어서 질러버렸다.


트레이서 박스에 담겨온 카드


박스에는 트레이서의 모습과 올해의 게임이라고 자랑하는 문구가 적혀있다.



그렇게 디바가 뽑히기를 간절히 원했건만 돼지새끼와 극혐 활잡이가 떠버렸다.


스티커도 왔는데 어디 써야할지 모르겠을 뿐더러 아까워서 쓸 수가 없다.


나중에 이벤트 뜨면 하나씩 질러서 상자까는데 써야겠다 ㅋ




'일상' 카테고리의 다른 글

작업요 추천  (0) 2017.07.19
앙 수학띠  (0) 2017.07.18
뉴 서피스 프로 광고 음악  (0) 2017.06.23
이정도면 갓스토리 인정합니다  (0) 2017.05.19
라임그린색 키캡 질렀다  (0) 2017.05.19
블로그 이미지

stuban

ㅇ.ㅇ

,

최근 유니티로 안드로이드 빌드를 하려면 이런 오류메시지가 뜬다


내 빈약한 영어 실력으로 대충 해석해 보자면 안드로이드 sdk경로가 맞지않다는 뜻인데.


분명히 모든 경로가 완벽한걸 확인해도 저 메시지는 계속 뜨게 된다.

물론 디버그 창에도 오류가 뜨게 된다


(디버그 창에 나오는 오류메시지)

Error building Player: CommandInvokationFailure: Unable to list target platforms. Please make sure the android sdk path is correct. See the Console for more details. 


저 위의 메시지로 구글링을 해본결과


sdk를 다운받을 수 있는 안드로이드 스튜디오가 업뎃 되면서

유니티가 쓰던 기능이 바뀌었다고 한다....


해결 방법은 아래 링크에서 안드로이드 스튜디오를 다운그레이드 하고 sdk를 다시 다운 받는 방법이 있으나...

https://developer.android.com/studio/archive.html


다행히도 저 해결법을 알려준 글에서 친절하게도 예전버전의 바뀐 부분만 올려 주셨다!

http://dl-ssl.google.com/android/repository/tools_r25.2.5-windows.zip


sdk의 tools폴더를 지우거나 이름을 바꿔놓고 다운받은 파일을 tools 로바꾸면 정상적으로 빌드 할 수 있게 된다.


출처 : http://www.devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=79671


네이버 원글 : http://stuban.blog.me/220995514977

블로그 이미지

stuban

ㅇ.ㅇ

,

유튜브에서 뭔가 신나는 노래만 나오는 영상에 자주 나오는 움직이는 정신사나운 막대.

그 막대기들을 유니티로 만들어 보자

--동영상 예시(화질구지)--



아래는 소스코드


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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
public class Visualizer : MonoBehaviour {
 
    public GameObject bar;//막대 원본
 
    public Transform barsParent;//막대 부모
 
    private RectTransform[] bars = new RectTransform[64];//막대들
 
    private AudioSource audioSur;//오디오 소스
 
    public float[] samples = new float[64]; //샘플//샘플수는 64가 최소 2의 거듭제곱으로 해야함
        
    private void OnEnable()
    {
        for(int i=0;i<bars.Length;i++)//막대들 만들기
        {
            bars[i] = (Instantiate(bar) as GameObject).GetComponent<RectTransform>();//막대생성
            bars[i].parent = barsParent;//부모설정
            bars[i].localPosition = new Vector2(i * 100);//포지션설정
 
            //색깔 랜덤
            bars[i].GetComponent<Image>().color = 
                new Vector4(Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), 1);
 
            bars[i].sizeDelta = new Vector2(51);//사이즈 초기화
        }
 
        audioSur = GetComponent<AudioSource>();//오디오 소스 가지고오기
 
        audioSur.Play();//플레이
    }
 
    private void Update()
    {
        //스펙트럼 가지고오는 함수
        audioSur.GetSpectrumData(samples, 0, FFTWindow.Rectangular);
    
        for(int i=0;i< 64; i++)//크기 조절
        {
            bars[i].sizeDelta = new Vector2(5, samples[i] * 700);
        }
    }
}


cs





오디오 스펙트럼의 막대는 이렇게 구성되어있다.

RectTransform의 Height를 조정하여 크기를 조절한다.

그냥 흰색으로만 되어있으면 심심하기 때문에 막대를 만들때 색깔을 랜덤으로 하였다.



하이라키 구성은 이렇게 되어있다.

하이라키의 GameObject에 위에 있는 소스와 오디오 소스가 들어있다.

당연히 GameObject의 오디오소스에는 세계적인 뮤지션 samsung의 대표곡 Over The Horizon을 넣어두었다.

막대를 만들때 부모를 캔버스의 Bars로 설정해두었다.


위에있는 소스코드의 메인인 스펙트럼을 가지고 오는 함수는 AudioSource.GetSpectrumdata이다


첫번째 인자는 샘플들을 저장할 수 있는 float배열을 받는데 배열의 길이는 무조건 64이상의 2의 승수다.


두번째 인자는 채널(뭔지는 모르겠다)


세번째 인자는 FFTWindow형이다

FFT는 고속 푸리에 변환(Fast Fourier Transform)의 약자이며 주파수를 사인파의 집합으로 분해 하는 알고리즘이라고 한다.

그리고 FFTWindow는 스펙트럼 분석 창 유형을 정하는 데 쓰인다.


참고로 푸리에 변환 알고리즘은 위같은 스펙트럼을 분석하는데 쓰거나 mp3파일을 만들때 심지어 MRI에도 쓰인다고 한다





고속 푸리에 변환에 대한 위키백과 링크

https://ko.wikipedia.org/wiki/%EA%B3%A0%EC%86%8D_%ED%91%B8%EB%A6%AC%EC%97%90_%EB%B3%80%ED%99%98


그 푸리에 변환을 만든 사람에 대한 위키백과 링크

https://ko.wikipedia.org/wiki/%EC%A1%B0%EC%A0%9C%ED%94%84_%ED%91%B8%EB%A6%AC%EC%97%90


FFTWindow에 대한 유니티 도큐먼트

https://docs.unity3d.com/ScriptReference/FFTWindow.html


AudioSource.GetSpectrumdata에 대한 유니티 도큐먼트

https://docs.unity3d.com/ScriptReference/AudioSource.GetSpectrumData.html


이글의 원본인 내 옛날 네이버 블로그

http://stuban.blog.me/220984744908


블로그 이미지

stuban

ㅇ.ㅇ

,