private void RunAutoplay() { if (CurrentWaypoint.NextWaypoint == null) { return; } _actor.colorDetails.addColor = CurrentWaypoint.IsConnectedWithNext; var nextWaypointPos = CurrentWaypoint.NextWaypoint.transform.localPosition; var endPoint = new Vector3(nextWaypointPos.x, nextWaypointPos.y, Head.transform.localPosition.z); var param = new TweenParms(); param.Prop("localPosition", endPoint); param.Ease(EaseType.Linear); param.OnComplete(() => { CurrentWaypoint = CurrentWaypoint.NextWaypoint; RunAutoplay(); }); param.OnUpdate(() => _transform.localPosition = Head.transform.localPosition); var distance = Vector3.Distance(Head.transform.localPosition, endPoint); HOTween.To(Head.transform, distance / _wayTrailSpeed, param); }
//creates a new HOTween tween with give arguments that moves along the path private void CreateTween() { //prepare HOTween's parameters, you can look them up here //http://www.holoville.com/hotween/documentation.html //create new plugin for curved paths //pass in array of Vector3 waypoint positions, relative = true plugPath = null; plugPath = new PlugVector3Path(wpPos, true, pathType); //orients the tween target along the path if (orientToPath) { plugPath.OrientToPath(lookAhead, lockAxis); } //lock position axis, if set if (lockPosition != Holoville.HOTween.Axis.None) { plugPath.LockPosition(lockPosition); } //create TweenParms for storing HOTween's parameters tParms = new TweenParms(); //sets the path plugin as tween position property tParms.Prop("position", plugPath); //additional tween parameters for partial tweens tParms.AutoKill(false); tParms.Loops(1); //differ between TimeValue, use speed with linear easing //or time based tweening with an animation easetype if (timeValue == TimeValue.speed) { tParms.SpeedBased(); tParms.Ease(EaseType.Linear); } else { //use time in seconds and the chosen easetype if (easeType == Holoville.HOTween.EaseType.AnimationCurve) { tParms.Ease(animEaseType); } else { tParms.Ease(easeType); } } //if we're on the original tween, //attach methods to the tween if (!moveToPath) { tParms.OnUpdate(CheckPoint); tParms.OnComplete(ReachedEnd); } //finally create the tween tween = HOTween.To(transform, originSpeed, tParms); //continue new tween with adjusted speed if it was changed before if (originSpeed != speed) { ChangeSpeed(speed); } }
void Start() { _initialized = true; _isRadioButton = _toggleGroupid != ""; List <IHOtk2dBase> childrenSprites = null; bool hasChildrenToTween = false; bool hasTextMeshesToTween = false; if (_tweenChildren && _tweenColorOn != ButtonActionType.None) { Component[] children = gameObject.GetComponentsInChildren(typeof(IHOtk2dBase)); childrenSprites = new List <IHOtk2dBase>(); foreach (Component child in children) { if (child == sprite) { continue; } childrenSprites.Add(child as IHOtk2dBase); IHOtk2dTextMesh txtMesh = child as IHOtk2dTextMesh; if (txtMesh != null) { _txtMeshesToUpdate.Add(txtMesh); } } hasChildrenToTween = childrenSprites.Count > 0; hasTextMeshesToTween = _txtMeshesToUpdate.Count > 0; } // Hide eventual tooltip if (_tooltip != null) { _tooltip.SetActive(false); _showTooltip = true; } // Create tweens TweenParms seqParms = new TweenParms(); if (hasRollover) { seqParms.Clear() .SetUpdate(true) .SetAutoKill(false); if (hasTextMeshesToTween) { seqParms.OnUpdate(UpdateTextMeshes); } _rolloutTween = DOTween.Sequence().SetAs(seqParms) .OnKill(() => _rolloutTween = null) .Pause(); if (_tweenScaleOn == ButtonActionType.OnRollover) { _rolloutTween.Insert(0, trans.DOScaleFrom(trans.localScale * _tweenScaleMultiplier, _TweenDuration)); } if (_tweenColorOn == ButtonActionType.OnRollover) { _rolloutTween.Insert(0, DOTween.From(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration)); if (hasChildrenToTween) { foreach (IHOtk2dBase childSprite in childrenSprites) { IHOtk2dBase s = childSprite; _rolloutTween.Insert(0, DOTween.From(() => s.color, x => s.color = x, _tweenColor, _TweenDuration)); } } } _rolloutTween.Complete(); } if (_tweenColorOn == ButtonActionType.OnPress || _tweenScaleOn == ButtonActionType.OnPress) { seqParms = seqParms.Clear() .SetUpdate(true) .SetAutoKill(false); if (hasTextMeshesToTween) { seqParms.OnUpdate(UpdateTextMeshes); } _unpressTween = DOTween.Sequence().SetAs(seqParms) .OnKill(() => _unpressTween = null) .Pause(); if (_tweenScaleOn == ButtonActionType.OnPress) { _unpressTween.Insert(0, trans.DOScaleFrom(trans.localScale * _tweenScaleMultiplier, _TweenDuration)); } if (_tweenColorOn == ButtonActionType.OnPress) { _unpressTween.Insert(0, DOTween.From(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration)); if (hasChildrenToTween) { foreach (IHOtk2dBase childSprite in childrenSprites) { IHOtk2dBase s = childSprite; _rolloutTween.Insert(0, DOTween.From(() => s.color, x => s.color = x, _tweenColor, _TweenDuration)); } } } _unpressTween.Complete(); } if (_tweenColorOn == ButtonActionType.OnClick || _tweenScaleOn == ButtonActionType.OnClick) { seqParms = seqParms.Clear() .SetUpdate(true) .SetAutoKill(false); if (hasTextMeshesToTween) { seqParms.OnUpdate(UpdateTextMeshes); } _unclickTween = DOTween.Sequence().SetAs(seqParms) .OnKill(() => _unclickTween = null) .Pause(); if (_tweenScaleOn == ButtonActionType.OnClick) { _unclickTween.Insert(0.15f, trans.DOScaleFrom(trans.localScale * _tweenScaleMultiplier, _TweenDuration)); } if (_tweenColorOn == ButtonActionType.OnClick) { _unclickTween.Insert(0.15f, DOTween.From(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration)); if (hasChildrenToTween) { foreach (IHOtk2dBase childSprite in childrenSprites) { IHOtk2dBase s = childSprite; _rolloutTween.Insert(0, DOTween.From(() => s.color, x => s.color = x, _tweenColor, _TweenDuration)); } } } _unclickTween.Complete(); } // Execute eventual cued actions if (_preinitActionsQueue != null) { foreach (PreinitActionType visualActionType in _preinitActionsQueue) { switch (visualActionType) { case PreinitActionType.ToggleOn: ToggleOn(); break; case PreinitActionType.ToggleOnWithoutEventDispatching: ToggleOn(false); break; case PreinitActionType.ToggleOff: ToggleOff(); break; case PreinitActionType.ToggleOffWithoutEventDispatching: ToggleOff(false); break; } } } }