private static ActionEase GetRandomActionEase(MoveTo moveTo) { ActionEase ease; switch (Roll.d10) { case 1: ease = new EaseBackInOut(moveTo); break; case 2: ease = new EaseBackIn(moveTo); break; case 3: ease = new EaseBackOut(moveTo); break; case 4: ease = new EaseBounceInOut(moveTo); break; case 5: ease = new EaseElasticInOut(moveTo); break; case 6: ease = new EaseElasticOut(moveTo); break; case 7: ease = new EaseExponentialIn(moveTo); break; case 8: ease = new EaseExponentialInOut(moveTo); break; case 9: ease = new EaseExponentialOut(moveTo); break; case 10: ease = new EaseInOut(moveTo, 5f); break; default: ease = new EaseBackInOut(moveTo); break; } return(ease); }
protected override void OnInit() { var initialSize = GetComponent <Renderer>().bounds.size; float spawnMinX = SpaceUtil.WorldMap.Left.x + initialSize.x; float spawnMinY = (SpaceUtil.WorldMap.Bottom.y + SpaceUtil.WorldMap.Center.y) * 0.5f; SpawnMin = new Vector2(spawnMinX, spawnMinY); float spawnMaxX = SpaceUtil.WorldMap.Right.x - initialSize.x; float spawnMaxY = (SpaceUtil.WorldMap.Center.y + SpaceUtil.WorldMap.Top.y) * 0.5f; SpawnMax = new Vector2(spawnMaxX, spawnMaxY); var activateCanCollide = new GameTaskFunc(this, () => CanCollide = true); float fullBrightAlpha = Alpha; var entranceFadeIn = new FadeTo(this, 0f, fullBrightAlpha, FadeTime); var entranceScaleIn = new ScaleTo(this, float.Epsilon, LocalScale, FadeTime); var entranceSequence = new Sequence(entranceFadeIn, entranceScaleIn, activateCanCollide); var fadeOut = new FadeTo(this, fullBrightAlpha, TravelAlpha, FadeTime); var fadeOutEase = new EaseIn3(fadeOut); var scaleOut = new ScaleTo(this, LocalScale, TravelSizeScale, FadeTime); var scaleOutEase = new EaseIn3(scaleOut); var fadeOutConcurrence = new ConcurrentGameTask(fadeOutEase, scaleOutEase); TravelMove = MoveTo.Default(this, 1.0f); TravelMoveEase = new EaseInOut(TravelMove); var fadeIn = new FadeTo(this, TravelAlpha, fullBrightAlpha, FadeTime); var scaleIn = new ScaleTo(this, TravelSizeScale, LocalScale, FadeTime); var fadeInConcurrence = new ConcurrentGameTask(fadeIn, scaleIn); TravelSequence = new Sequence(fadeOutConcurrence, TravelMoveEase, fadeInConcurrence, activateCanCollide); CanCollide = false; LocalScale = float.Epsilon; transform.position = SpaceUtil.WorldMap.Center; RunTask(entranceSequence); }
void CallFuncTest() { btn_text.text = "点击停止"; var action = Sequence.Create( CallFunc.Create(CallBackO, "延时0.5秒"), DelayTime.Create(0.5f), CallFunc.Create(CallBackO, "图片移动"), MoveTo.Create(1f, 200, 100).InitSubjectTransform(image.transform), MoveTo.Create(1f, 0, 0).InitSubjectTransform(image.transform), CallFunc.Create(CallBackO, "颜色渐变"), ColorTo.Create(0.5f, 1, 0, 0, 1f).InitSubjectComponent(image), ColorTo.Create(0.5f, 0, 1, 0, 1f).InitSubjectComponent(image), ColorTo.Create(0.5f, 0, 0, 1, 1f).InitSubjectComponent(image), CallFunc.Create(CallBackO, "颜色reset"), ColorTo.Create(0.5f, 1, 1, 1, 1).InitSubjectComponent(image), CallFunc.Create(CallBackO, "渐隐"), FadeOut.Create(1f).InitSubjectComponent(image), CallFunc.Create(CallBackO, "渐出"), FadeIn.Create(1f).InitSubjectComponent(image), CallFunc.Create(CallBackO, "1秒闪烁5次"), Blink.Create(1f, 5), CallFunc.Create(CallBackO, "二阶贝塞尔曲线"), BezierTo.Create(2.0f, new Vector3(200, 100, 0), new Vector3(-100, 50, 0), new Vector3(100, 80, 0)).InitSubjectTransform(image.transform), CallFunc.Create(CallBackO, "移动回原点"), MoveTo.Create(1f, 0, 0).InitSubjectTransform(image.transform), CallFunc.Create(CallBackO, "边移动边放大"), Spawn.Create(MoveTo.Create(1.0f, 200, 100f), ScaleTo.Create(1.0f, 3.0f, 3.0f, 3.0f)), CallFunc.Create(CallBackO, "缩放位置回原位"), Spawn.Create(MoveTo.Create(1.0f, 0, 0), ScaleTo.Create(1.0f, 1f, 1f, 1f)), NumberBy.Create(2.0f, "数字跳跃,从100到200:{0:f2}", 100, 100).InitSubjectComponent(text), DelayTime.Create(0.5f), NumberTo.Create(2.0f, "数字跳跃,从200到0:{0:f2}", 200, 0).InitSubjectComponent(text), DelayTime.Create(0.5f), CallFunc.Create(CallBackO, "Image Filled"), FillAmountTo.Create(1.5f, 0f).InitSubjectComponent(image), FillAmountTo.Create(1.5f, 1.0f).InitSubjectComponent(image), CallFunc.Create(CallBackO, "reset"), CallFunc.Create(CallBackO, "旋转 放大2倍,复原。重复3次"), Repeat.Create(Spawn.Create( RotationBy.Create(1.0f, 0, 0, 360f), Sequence.Create( ScaleTo.Create(0.5f, 2.0f, 2.0f, 2.0f), ScaleTo.Create(0.5f, 1.0f, 1.0f, 1.0f))).InitSubjectTransform(image.transform), 3), ExtraAction.Create() ); float toX = 300f; var easeAction = Sequence.Create( CallFunc.Create(CallBackO, "变速运动演示,图一正常,图二是变速运动"), DelayTime.Create(1f), CallFunc.Create(CallBackO, "当前变速是EaseIn"), DelayTime.Create(0.5f), Spawn.Create( MoveBy.Create(1.0f, toX, 0f, 0f).InitSubjectTransform(image.transform), EaseIn.Create(MoveBy.Create(1.0f, toX, 0f, 0f).InitSubjectTransform(image2.transform), 3f)), CallFunc.Create(CallBackO, "复位"), Spawn.Create( MoveBy.Create(1.0f, -toX, 0f, 0f).InitSubjectTransform(image.transform), EaseIn.Create(MoveBy.Create(1.0f, -toX, 0f, 0f).InitSubjectTransform(image2.transform), 3f)), CallFunc.Create(CallBackO, "当前变速是EaseOut"), DelayTime.Create(0.5f), Spawn.Create( MoveBy.Create(1.0f, toX, 0f, 0f).InitSubjectTransform(image.transform), EaseOut.Create(MoveBy.Create(1.0f, toX, 0f, 0f).InitSubjectTransform(image2.transform), 3f)), CallFunc.Create(CallBackO, "复位"), Spawn.Create( MoveBy.Create(1.0f, -toX, 0f, 0f).InitSubjectTransform(image.transform), EaseOut.Create(MoveBy.Create(1.0f, -toX, 0f, 0f).InitSubjectTransform(image2.transform), 3f)), CallFunc.Create(CallBackO, "当前变速是EaseInOut"), DelayTime.Create(0.5f), Spawn.Create( MoveBy.Create(1.0f, toX, 0f, 0f).InitSubjectTransform(image.transform), EaseInOut.Create(MoveBy.Create(1.0f, toX, 0f, 0f).InitSubjectTransform(image2.transform), 3f)), CallFunc.Create(CallBackO, "复位"), Spawn.Create( MoveBy.Create(1.0f, -toX, 0f, 0f).InitSubjectTransform(image.transform), EaseInOut.Create(MoveBy.Create(1.0f, -toX, 0f, 0f).InitSubjectTransform(image2.transform), 3f)), CallFunc.Create(CallBackO, "变速运动未完待续"), DelayTime.Create(1f), ExtraAction.Create() ); CCActionManager.Instance.AddAction(Sequence.Create(action, easeAction, CallFunc.Create(CallBackEnd)), transform); }