예제 #1
0
        public void CanWriteAnimations()
        {
            using var file = new DMIFile(@"Data/Input/animal.dmi");
            var toTest = file.States.First(x => x.Name == "mushroom");

            for (StateDirection dir = StateDirection.South; dir != StateDirection.SouthEast; dir++)
            {
                using var fs = System.IO.File.OpenWrite($@"Data/Output/mushroom_gif_{dir}.gif");
                toTest.SaveAnimatedGIF(fs, dir);
            }
        }
예제 #2
0
    // Start is called before the first frame update
    void Start()
    {
        //初期化
        bTrigger          = false;
        lerpValue         = 0.0f;
        lerpValueplus     = 1.0f;
        stateDirection    = StateDirection.STATE_RIGHT;
        oldstateDirection = stateDirection;
        ImageSize         = 32.0f;
        nMoveCnt          = 0;
        child.enabled     = true;
        bInterbal         = false;

        AudioSource = gameObject.GetComponents <AudioSource>();

        // ポジション宣言
        recttransform = GetComponent <RectTransform>().localPosition;
    }
예제 #3
0
 public AlphabetType(string _text, XmlElement _element, StateDirection _direction)
 {
     Text      = _text;
     Element   = _element;
     Direction = _direction;
 }
예제 #4
0
 public AlphabetType(string _text, XmlElement _element, StateDirection _direction)
 {
     Text = _text;
     Element = _element;
     Direction = _direction;
 }
예제 #5
0
        public static Point CreateNewPoint(StateDirection direction, Point currentPosition, SpriteMeta meta)
        {
            var offsetPixelDirection = meta.OffsetPixelsDirections.Where(x => x.Key == direction).Select(y => y.Value).First();

            return(new Point(offsetPixelDirection.X + currentPosition.X + meta.SpacingBetweenSize.X, offsetPixelDirection.Y + currentPosition.Y + meta.SpacingBetweenSize.Y));
        }
예제 #6
0
        public static Rectangle CreateRectangle(StateDirection direction, Point currentPosition, SpriteMeta meta)
        {
            var newPosition = CreateNewPoint(direction, currentPosition, meta);

            return(new Rectangle(newPosition.X, newPosition.Y, meta.IconSize.X, meta.IconSize.Y));
        }
예제 #7
0
 public static void SetFrame(DMIState state, Image <Rgba32> image, DirectionDepth depth, StateDirection direction, int frame)
 {
     if (depth == DirectionDepth.One)
     {
         state.SetFrame(image, frame);
     }
     else
     {
         state.SetFrame(image, direction, frame);
     }
 }
예제 #8
0
    // Update is called once per frame
    void Update()
    {
        // トリガーがONになったら
        if (bTrigger)
        {
            // カンスト処理
            if (nMoveCnt >= 999)
            {
                nMoveCnt = 999;
            }

            // 線形補間
            recttransform = Vector3.Lerp(q1, q2, lerpValue);
            GetComponent <RectTransform>().localPosition = recttransform;

            // 値を足す
            lerpValue += lerpValueplus;

            // 値が1.0f以上になったらやめる
            if (lerpValue >= 1.0f)
            {
                // 正規化
                lerpValue = 1.0f;

                // 線形補間
                recttransform = Vector3.Lerp(q1, q2, lerpValue);
                GetComponent <RectTransform>().localPosition = recttransform;

                // 初期化
                bTrigger  = false;
                lerpValue = 0.0f;
            }

            return;
        }
        else if (bTrigger || signManager.goal || !pause.bpop || startlogo.bStart)
        {
            return;
        }

        // キー入力待ち
        if (!bInterbal && !bTrigger && Input.GetKeyDown(KeyCode.DownArrow) || Input.GetKeyDown(KeyCode.S))
        {//下
            if (recttransform.y <= -200)
            {
                return;
            }
            // 走行距離プラス
            nMoveCnt++;

            q1 = new Vector3(recttransform.x, recttransform.y, recttransform.z);
            q2 = new Vector3(recttransform.x, recttransform.y - ImageSize, recttransform.z);

            // 顔の向きを変える
            transform.rotation = Quaternion.Euler(0f, 0f, -90f);

            // 向きを格納
            oldstateDirection = stateDirection; // 過去の向きを保存
            stateDirection    = StateDirection.STATE_DOWN;

            // トリガーON
            bTrigger = true;

            bInterbal = true;
            return;
        }
        else if (!bInterbal && !bTrigger && Input.GetKeyDown(KeyCode.UpArrow) || Input.GetKeyDown(KeyCode.W))
        {//上
            if (recttransform.y >= 200)
            {
                return;
            }

            // 走行距離プラス
            nMoveCnt++;

            q1 = new Vector3(recttransform.x, recttransform.y, recttransform.z);
            q2 = new Vector3(recttransform.x, recttransform.y + ImageSize, recttransform.z);

            // 顔の向きを変える
            transform.rotation = Quaternion.Euler(0f, 0f, 90f);

            // 向きを格納
            oldstateDirection = stateDirection; // 過去の向きを保存
            stateDirection    = StateDirection.STATE_UP;

            // トリガーON
            bTrigger = true;

            bInterbal = true;

            return;
        }

        if (!bInterbal && !bTrigger && Input.GetKeyDown(KeyCode.LeftArrow) || Input.GetKeyDown(KeyCode.A))
        {//左
            if (recttransform.x <= -380)
            {
                return;
            }

            // 走行距離プラス
            nMoveCnt++;

            q1 = new Vector3(recttransform.x, recttransform.y, recttransform.z);
            q2 = new Vector3(recttransform.x - ImageSize, recttransform.y, recttransform.z);

            // 顔の向きを変える
            transform.rotation = Quaternion.Euler(0f, -180f, 0f);

            // 向きを格納
            oldstateDirection = stateDirection; // 過去の向きを保存
            stateDirection    = StateDirection.STATE_LEFT;

            // トリガーON
            bTrigger = true;

            bInterbal = true;

            return;
        }
        else if (!bInterbal && !bTrigger && Input.GetKeyDown(KeyCode.RightArrow) || Input.GetKeyDown(KeyCode.D))
        {//右
            if (recttransform.x >= 380)
            {
                return;
            }

            // 走行距離プラス
            nMoveCnt++;

            q1 = new Vector3(recttransform.x, recttransform.y, recttransform.z);
            q2 = new Vector3(recttransform.x + ImageSize, recttransform.y, recttransform.z);

            // 顔の向きを変える
            transform.rotation = Quaternion.Euler(0f, 0f, 0f);

            // 向きを格納
            oldstateDirection = stateDirection; // 過去の向きを保存
            stateDirection    = StateDirection.STATE_RIGHT;

            // トリガーON
            bTrigger = true;

            bInterbal = true;

            return;
        }

        // 一回入力したらインターバルを置く
        if (bInterbal)
        {
            bInterbal = false;
        }
    }