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; }
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()); }
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); }
private void Clear() { if (self != null) { self.Dispose(); } self = null; parent = null; b2 = null; }
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"); }
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); }
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; } } }
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)); }
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(); }; }