2020년 3월 14일 토요일

UNITY 투명화 스크립트


이전 메터리얼 저장

Material[] newMat;
newMat = Equip.GetComponent<MeshRenderer>().materials;
Arrow.GetComponent<Panel_TutoInfo>().mat_Prev = newMat;



void SetTargetObjectToTransparent()
    {
        //Debug.Log("투명");
        MeshRenderer ren;
        Material[] mats;
     
        ren = TargetObj.GetComponent<MeshRenderer>();
        mats = ren.materials;

        for (int i = 0; i < mats.Length; i++)
        {
            mats[i] = mat_Transparent;
        }

        ren.materials= mats;

        //mats[0] = mat_Transparent;

    }

    void SetTargetObjectToReverseMat()
    {
        //Debug.Log("불투명");
        MeshRenderer ren;
        Material[] mats;
        ren = TargetObj.GetComponent<MeshRenderer>();
        mats = ren.materials;

        for (int i = 0; i < mats.Length; i++)
        {
            mats[i] = mat_Prev[i];
        }
        ren.materials = mats;
    }



using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ObjectTransparentManager : MonoBehaviour
{
    public Material mat_Transparent;

    public MeshRenderer[] targetrenders;

    public Dictionary<int, Material[]> dic_prevMats = new Dictionary<int, Material[]>();
    //public Material[,] prevMats;
    // Start is called before the first frame update
    void Start()
    {
        targetrenders = GetComponentsInChildren<MeshRenderer>();
        InItMeshs();
    }

    public void InItMeshs()
    {
        for (int i=0;i< targetrenders.Length;i++)
        {
            Material[] tempMat;
            tempMat = targetrenders[i].materials;
            dic_prevMats.Add(i, tempMat);
        }
    }

    public void SetObjectToTransparent()
    {
        for (int i = 0; i < targetrenders.Length; i++)
        {
           
            Material[] mats;
            mats = targetrenders[i].materials;
            for (int x = 0; x < mats.Length; x++)
            {
                mats[x] = mat_Transparent;
            }

            targetrenders[i].materials = mats;
        }
    }

    public void SetObjectReverseMat()
    {
        for (int i = 0; i < targetrenders.Length; i++)
        {
            Material[] mats;
            mats = targetrenders[i].materials;
            mats = dic_prevMats[i];
            targetrenders[i].materials = mats;
        }
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown("1"))
        {
            SetObjectToTransparent();
        }

        if (Input.GetKeyDown("2"))
        {
            SetObjectReverseMat();
        }
    }
}

unity cloth

unity cloth효과의

맥스 콜라이더 갯수는 15개이다

초과되면 적용되지 않는다

2020년 3월 10일 화요일

협업

할때는 property를 왠만하면 만들지 말고

왠만하면 csv 파일로 내려서 하기

2020년 3월 4일 수요일

특정 비율로 변수값 적용하기



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
float value_test;
float value_percent
value_test은 0~0.34까지 증가하는 값임
value_percent = value_test / 0.34//를 하면 비율을 알수있음
value1의 비율에 따라 움직이고 싶은 객체 Obj1 이 있다고한다
Obj1의 min,max 값은 -5에서 5이다
value1의 비율에 따라 obj의 값을 특정하여라
float Cal_Value;
Cal_Value =value_percent *|min|+|max| ) + min;
이런식으로 하면 비율에 따른 새로운 값을 구할 수 있다.
cs



Unity getter setter 예제

getter setter 예제~~

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
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class TextShift : MonoBehaviour
{
    public Material material;
    public GameObject RootObj;
    public CapsuleCollider[] allCoilliders;
    float firstvalue = 0;
    float centerValue = 0.34f;
    float lastValue = 0.7f;
    /// <summary>
    /// 특정값(회전값)이 들어오면 회전값 만큼 텍스쳐를 시프팅 하는 기능
    /// </summary>
    private float currentOffsetValue;
    public float CurrentOffsetValue
    {
        get { return currentOffsetValue; }
        set
        {
            OnShifting(value);//해당 변수가 set 되면 시프팅 함수 실행
            currentOffsetValue = value;
        }
    }
    private void Start()
    {
        CollistionInit();
    }
    void CollistionInit()
    {
        if (RootObj == null)
            return;
        allCoilliders = RootObj.GetComponentsInChildren<CapsuleCollider>();
        this.GetComponent<Cloth>().capsuleColliders = allCoilliders;
    }
    //원하는 값으로 텍스쳐를 시프팅 하는 함수
    public void OnShifting(float value)
    {
        if (cor_shifting != null)
        {
            StopCoroutine(cor_shifting);
            cor_shifting = null;
        }
        cor_shifting = textureShifting(value);
        StartCoroutine(cor_shifting);
    }
    
    
    IEnumerator cor_shifting;
    IEnumerator textureShifting(float value)
    {
        float addvalue = 0.00005f;
        while (material.mainTextureOffset.y < value)
        {
            material.mainTextureOffset = new Vector2(1f, material.mainTextureOffset.y + addvalue);
            addvalue += 0.00005f;   
            yield return new WaitForEndOfFrame();
        }
        while (material.mainTextureOffset.y > value)
        {
            material.mainTextureOffset = new Vector2(1f, material.mainTextureOffset.y - addvalue);
            addvalue += 0.00005f;
            yield return new WaitForEndOfFrame();
        }
        material.mainTextureOffset = new Vector2(1f, value);
    }
    
    
}
cs


Unity GameObject 크기 조절 함수

IEnumerator CoilShulink(GameObject TargetObj, float TargetValue)
    {
        float offset = 0.02f;

        while (TargetObj.transform.localScale.x >= TargetValue)
        {
            if (TargetObj.transform.localScale.x > TargetValue)
            {
                TargetObj.transform.localScale -= new Vector3(offset * Time.deltaTime, offset * Time.deltaTime, 0);
            }
            else
            {
                TargetObj.transform.localScale = new Vector3(TargetValue, TargetValue, 0.7f);
            }

            yield return new WaitForEndOfFrame();
            offset += offset * Time.deltaTime;
        }

        while (TargetObj.transform.localScale.x <= TargetValue)
        {
            if (TargetObj.transform.localScale.x < TargetValue)
            {
                TargetObj.transform.localScale += new Vector3(offset * Time.deltaTime, offset * Time.deltaTime, 0);
            }
            else
            {
                TargetObj.transform.localScale = new Vector3(TargetValue, TargetValue, 0.7f);
            }

            yield return new WaitForEndOfFrame();
            offset += offset * Time.deltaTime;
        }
    }

git rejected error(feat. cherry-pick)

 문제 아무 생각 없이 pull을 받지않고 로컬에서 작업! 커밋, 푸시 진행을 해버렷다. push에선 remote와 다르니 당연히 pull을 진행해라고 하지만 로컬에서 작업한 내용을 백업하지 않고 진행하기에는 부담스럽다(로컬작업 유실 가능성) 해결하려...