'unity script'에 해당되는 글 2건

  1. 2015.03.27 [unity3d] swipe
  2. 2015.03.27 [unity3d] fadein, fadeout
Game/Unity2015.03.27 12:57

using UnityEngine;
using System.Collections;

public class Swipe : MonoBehaviour
{
    // const
    public const string RIGHT = "Right";
    public const string DOWN = "Down";
    public const string LEFT = "Left";
    public const string UP = "Up";
    // delegate
    public delegate void SwapeDelegate (string way);

    public SwapeDelegate swape {
        set {
            swapeDelegate = value;
        }
    }

    private SwapeDelegate swapeDelegate;
    // variable
    private Vector2 touchStartPos;
    private bool touchStarted;
    private float minSwipeDistancePixels = 100f;

    void Update ()
    {
        if (Input.touchCount > 0) {
            var touch = Input.touches [0];
            
            switch (touch.phase) {
            case TouchPhase.Began:
                touchStarted = true;
                touchStartPos = touch.position;
                break;
            case TouchPhase.Ended:
                if (touchStarted) {
                    Swipe (touch);
                    touchStarted = false;
                }
                break;
            case TouchPhase.Canceled:
                touchStarted = false;
                break;
            case TouchPhase.Stationary:
                break;
            case TouchPhase.Moved:
                break;
            }
        }
    }

    private void Swipe (Touch touch)
    {
        var lastPos = touch.position;
        var distance = Vector2.Distance (lastPostouchStartPos);
        
        if (distance > minSwipeDistancePixels) {
            float dy = lastPos.y - touchStartPos.y;
            float dx = lastPos.x - touchStartPos.x;
            
            float angle = Mathf.Rad2Deg * Mathf.Atan2 (dxdy);
            
            angle = (360 + angle - 45) % 360;

            if (angle < 90) {
                // right
                swapeDelegate ("Left");
            } else if (angle < 180) {
                // down
                swapeDelegate ("Down");
            } else if (angle < 270) {
                // left
                swapeDelegate ("Right");
            } else {
                // up
                swapeDelegate ("Up");
            }
        }
    }
}

저작자 표시
신고
Posted by Namseungil
Game/Unity2015.03.27 12:56

using UnityEngine;
using System.Collections;

public enum FadeStatus
{
    FADEIN,
    FADE,
    FADEOUT,
    FADEOVER
}

public class FadeInOutComponent : MonoBehaviour
{
    // delegate
    public delegate void FinishDelegate ();
    private FinishDelegate fadeIn;
    private FinishDelegate fade;
    private FinishDelegate fadeOut;

    public FinishDelegate FadeIn
    {
        set {
            fadeIn = value;
        }
    }

    public FinishDelegate Fade
    {
        set {
            fade = value;
        }
    }

    public FinishDelegate FadeOut
    {
        set {
            fadeOut = value;
        }
    }

    // component
    public Color color = Color.black;
    private Color currentColor;
    // variable
    public float time = 0.4f;
    private float currentTime;
    private FadeStatus fadeStatus;

    void Start ()
    {
        currentTime = time;
        currentColor = Color.clear;
        fadeStatus = FadeStatus.FADEOVER;
    }

    void Update ()
    {
        if (fadeStatus == FadeStatus.FADEOVER) {
            return;
        }

        currentTime += Time.deltaTime;

        switch (fadeStatus) {
        case FadeStatus.FADEIN :
            currentColor = Color.Lerp (Color.clearcolorcurrentTime / time);
            break;
        case FadeStatus.FADEOUT :
            currentColor = Color.Lerp (colorColor.clearcurrentTime / (time));
            break;
        }

        if (currentTime >= time) {
            currentTime = 0;
            switch (fadeStatus) {
            case FadeStatus.FADEIN :
                fadeStatus = FadeStatus.FADE;

                if (fadeIn != null) {
                    fadeIn ();
                }
                break;
            case FadeStatus.FADE :
                fadeStatus = FadeStatus.FADEOUT;

                if (fade != null) {
                    fade ();
                }
                break;
            case FadeStatus.FADEOUT :
                fadeStatus = FadeStatus.FADEOVER;

                if (fadeOut != null) {
                    fadeOut ();
                }
                break;
            default :
                return;
            }
        }
    }

    void OnGUI ()
    {
        var gColor = GUI.color;
        GUI.color = currentColor;
        GUI.DrawTexture (new Rect (00Screen.widthScreen.height), Texture2D.whiteTexture);
        GUI.color = gColor;
    }

    public void Init ()
    {
        currentTime = 0;
        currentColor = Color.clear;
        fadeStatus = FadeStatus.FADEIN;
    }
}

저작자 표시
신고
Posted by Namseungil

티스토리 툴바