Esempio n. 1
0
    public void Init(Bezier2D path, Player player)
    {
        Path    = path;
        _player = player;

        var g = GetComponentsInChildren <GimmickBase>();

        _gimmicks = new GimmickInfo[g.Length];

        for (var i = 0; i < g.Length; i++)
        {
            _gimmicks[i] = new GimmickInfo(g[i]);
            g[i].Init();
        }

        //昇順にソート
        _gimmicks = _gimmicks
                    .OrderBy((item) => item.Gimmick.StartPoint)
                    .ToArray();

        SetStartTime();
        SetLine();

        for (var i = g.Length - 1; i >= 0; i--)
        {
            _gimmicks[i].Gimmick.SpawnModel(player);
        }

        GameMaster.Instance.OnGameStart += () => _startTime = Time.time;
    }
Esempio n. 2
0
    public void Init(Bezier2D path)
    {
        //見た目を取得
        Body = transform.GetChild(0);

        //最初は一番大きくする
        SetScaleFromRatio(1);

        _path = path;
        Speed = GameMaster.Instance.GameBalanceData.PlayerSpeed;

        MovedLength = 0;

        CenterLight.material = new Material(CenterLight.material);
        CenterLight.material.EnableKeyword("_EMISSION");
        Ring1.material = new Material(Ring1.material);
        Ring1.material.EnableKeyword("_EMISSION");
        Ring2.material = new Material(Ring2.material);
        Ring2.material.EnableKeyword("_EMISSION");

        //パーティクルのスポーン
        _particle = ParticleManager.Spawn("ActorMoveEffect", transform.position, Quaternion.identity, 0);
        _particle.transform.SetParent(transform);

        SetLight(PlayerCaptureStatus.All);

        StartCoroutine(MoveAudioUpdate());
    }
Esempio n. 3
0
    public Vector2 GetPoint(float t)
    {
        // make sure t is between 0, 1 in just in case
        t = Mathf.Clamp01(t);

        //return transform.TransformPoint(Bezier2D.GetPoint(p0, p1, p2, t));
        return(Bezier2D.GetPoint(p0, p1, p2, t));
    }
    public void InitStage(Player player, Bezier2D path, GimmickManager manager)
    {
        _player         = player;
        _gimmickManager = manager;
        _pathLength     = path.Length;

        player.Init(path);
        _gimmickManager.Init(path, player);
        MouseCamera.Init(player);
    }
Esempio n. 5
0
 private void Clear()
 {
     if (self != null)
     {
         self.Dispose();
     }
     self   = null;
     parent = null;
     b2     = null;
 }
Esempio n. 6
0
    private void OnEnable()
    {
        _gimmickBase = (GimmickBase)target;
        _manager     = _gimmickBase.GetComponentInParent <GimmickManager>();

        if (_manager)
        {
            _gimmicks = _manager.GetComponentsInChildren <GimmickBase>();
            _path     = _gimmickBase.GetComponentInParent <Bezier2D>();
        }

        _lineColor  = serializedObject.FindProperty("GimmickColor");
        _startPoint = serializedObject.FindProperty("StartPoint");
        _endPoint   = serializedObject.FindProperty("EndPoint");
    }
Esempio n. 7
0
    public Tweener Bezier(GObject view, float time, Vector2 a, Vector2 b, Vector2 c, Action fun = null)
    {
        Bezier2D b2 = new Bezier2D(Bezier2D.BEZIER2D_2, a, b, c, Vector2.zero);
        float    f  = 0;
        Tweener  t  = DOTween.To(() => f, x => f = x, time, time).OnUpdate(() =>
        {
            view.xy = b2.GetPosition(f / time);
        }).OnComplete(() =>
//		}).SetEase (Ease.OutQuad).OnComplete (() =>
        {
            if (fun != null)
            {
                fun();
            }
        });

        return(t);
    }
Esempio n. 8
0
 public void moveY()
 {
     if (self != null && !stopY)
     {
         y += speed;
         if (speed < 0)
         {
             if (y <= ey)
             {
                 y      = ey;
                 stopY  = true;
                 b2     = new Bezier2D(Bezier2D.BEZIER2D_2, new Vector2(x, y), bezier, endP, Vector2.zero);
                 playB2 = true;
             }
         }
         updateY();
     }
     moveB2();
 }
    private static void DrawGizmos(Bezier2D bezier, GizmoType gizmoType)
    {
        //分割数
        const int partition = 32;

        var points = bezier.Points;

        Gizmos.color = BezierColor;

        for (var i = 4; i < points.Count; i += 3)
        {
            var prevPoint = Bezier2D.GetPoint(points[i - 3], points[i - 2], points[i - 1], points[i], 0);
            for (var j = 1; j <= partition; j++)
            {
                var point = Bezier2D.GetPoint(points[i - 3], points[i - 2], points[i - 1], points[i], j / (float)partition);
                Gizmos.DrawLine(prevPoint, point);
                prevPoint = point;
            }
        }
    }
Esempio n. 10
0
 public Vector2 GetFirstDerivative(float t)
 {
     t = Mathf.Clamp01(t);
     //return transform.TransformPoint(Bezier2D.GetFirstDerivative(p0, p1, p2, t));
     return(Bezier2D.GetFirstDerivative(p0, p1, p2, t));
 }
Esempio n. 11
0
 public virtual void Init()
 {
     Manager = GetComponentInParent <GimmickManager>();
     Path    = Manager.Path;
 }
    private void OnEnable()
    {
        _bezier = target as Bezier2D;
        _points = serializedObject.FindProperty("_points");

        _reorderableList =
            new ReorderableList(GetBezierPointsIndexOnLine(), typeof(int), true, true, false, true);

        //ヘッダーの描画
        _reorderableList.drawHeaderCallback += rect => {
            EditorGUI.LabelField(rect, "Anchor Points");
        };

        //要素の描画
        _reorderableList.drawElementCallback += (rect, index, isActive, isFocused) => {
            if (isFocused && _listUpdateFlg)
            {
                _focusControl  = index * 3 + 1;
                _listUpdateFlg = false;
            }

            var id = (int)_reorderableList.list[index];
            if (id < _points.arraySize)
            {
                EditorGUI.LabelField(rect, _points.GetArrayElementAtIndex(id).vector2Value.ToString());
            }
        };

        //背景の描画
        _reorderableList.drawElementBackgroundCallback = (rect, index, isActive, isFocused) => {
            if (_state != State.Move || _focusControl != index * 3 + 1)
            {
                return;
            }
            var tex = new Texture2D(1, 1);
            tex.SetPixel(0, 0, ActiveHandleColor);
            tex.Apply();
            GUI.DrawTexture(rect, tex);
        };

        //要素を選択したとき
        _reorderableList.onSelectCallback += list => {
            if (_state == State.Move)
            {
                _listUpdateFlg = true;
            }
        };

        // - ボタンで削除できるかどうか
        _reorderableList.onCanRemoveCallback += list =>
                                                _focusControl - 1 >= 0 && (_focusControl - 1) / 3 < list.list.Count;

        // - ボタンが押されたとき
        _reorderableList.onRemoveCallback += list => {
            RemoveAnchorPoint(_focusControl);
        };

        //入れ替えが発生した場合
        _reorderableList.onReorderCallback += list => {
            Undo.RecordObject(_bezier, "Replacement BezierPoint");
            serializedObject.Update();

            var posList   = (List <int>)list.list;
            var arraySize = _points.arraySize;
            var nPoints   = new Vector2[arraySize];

            for (var i = 0; i < posList.Count; i++)
            {
                var srcIndex  = i * 3;
                var destIndex = posList[i] - 1;
                for (var j = 0; j < 3; j++)
                {
                    nPoints[destIndex + j] = _points.GetArrayElementAtIndex(srcIndex + j).vector2Value;
                }
            }

            for (var i = 0; i < arraySize; i++)
            {
                _points.GetArrayElementAtIndex(i).vector2Value = nPoints[i];
            }

            GetBezierPointsIndexOnLine();
            serializedObject.ApplyModifiedProperties();
            Repaint();
        };
    }