Пример #1
0
                public override IReelSequence Create(AntagonistSequenceProperty property)
                {
                    //リール全体が行ったり来たりするシーケンスを生成
                    var antagonistSq =
                        ReelSequence.Empty()
                        .Append(sqProvider.CreateRollSequence(roleIntervalAngle * .5f, .3f))             //.5
                        .Append(sqProvider.CreateRollSequence(roleIntervalAngle * -.5f, .3f))            // 0
                        .Append(sqProvider.CreateRollSequence(roleIntervalAngle * .7f, .3f))             //.7
                        .Append(sqProvider.CreateRollSequence(roleIntervalAngle * -.5f, .3f))            //.2
                        .Append(sqProvider.CreateRollSequence(roleIntervalAngle * .6f, .3f))             //.8
                        .Append(sqProvider.CreateRollSequence(roleIntervalAngle * -.4f, .3f))            //.4
                        .Append(sqProvider.CreateRollSequence(roleIntervalAngle * .5f, .3f))             //.9
                        .AppendInterval(1f);


                    //最後に、当たりかハズレかによって、リールを進めるか戻すかのシーケンスを追加する
                    if (property.IsOffenserWin)
                    {
                        antagonistSq.Append(sqProvider.CreateRollSequence(roleIntervalAngle * .1f, .1f));
                    }
                    else
                    {
                        antagonistSq.Append(sqProvider.CreateRollSequence(roleIntervalAngle * -.9f, .4f));
                    }

                    return(antagonistSq);
                }
Пример #2
0
 public override IReelSequence Create(AntagonistSequenceProperty property) =>
 ReelSequence.Empty()
 //中央までリールを回転させて
 .Append(sqProvider.CreateRollSequence(roleIntervalAngle * .5f, 1.5f))
 //振動させて
 .Append(sqProvider.Create(t => t.DOShakePosition(3, 0.02f).ToSequence(), property.Offenser, property.Defenser))
 //当たりなら進める、ハズレなら戻す
 .Append(sqProvider.CreateRollSequence(property.IsOffenserWin ? roleIntervalAngle * .5f : roleIntervalAngle * -.5f, .5f));
 /// <summary>
 /// リーチの拮抗演出シーケンスを取得する
 /// </summary>
 /// <param name="antagonist"></param>
 /// <param name="property"></param>
 /// <returns></returns>
 public IReelSequence CreateAntagonistSequence(AntagonistType antagonist, AntagonistSequenceProperty property)
 {
     return(antagonistProvider.GetAntagonistSequence(antagonist, property));
 }
Пример #4
0
 public abstract IReelSequence Create(AntagonistSequenceProperty property);
Пример #5
0
 public IReelSequence GetAntagonistSequence(AntagonistType antagonist, AntagonistSequenceProperty property)
 {
     return(antagonistSqCreatorTable[antagonist].Create(property));
 }
Пример #6
0
                public override IReelSequence Create(AntagonistSequenceProperty property)
                {
                    //戦うベースポジション
                    var leftBasePosition  = fightCenterPosition.PlusX(-centerToFighterLength);
                    var rightBasePosition = fightCenterPosition.PlusX(centerToFighterLength);

                    //OffenserがDefenserにツンツンと攻撃するようなシーケンスを取得するテーブル
                    Dictionary <RoleValue, Func <RoleTweenProvider, Sequence> > firstAntagonistSelectorTable =
                        new Dictionary <RoleValue, Func <RoleTweenProvider, Sequence> >()
                    {
                        [property.Offenser] = provider =>
                                              DOTween.Sequence()
                                              .Append(provider.RollMultiple(.7f, .2f))              //速くぶつかって
                                              .Append(provider.RollMultiple(-.7f, .8f))             //ゆっくり戻って
                                              .Append(provider.RollMultiple(.8f, .2f))              //速くぶつかって
                                              .Append(provider.RollMultiple(-.8f, .8f))             //ゆっくり戻って
                                              .Append(provider.RollMultiple(.9f, .1f))              //速くぶつかって
                                              .Append(provider.RollMultiple(-.9f, .8f))             //ゆっくり戻って
                    };

                    //前に出てきて対決
                    Dictionary <RoleValue, Func <Transform, Sequence> > fightSelectorTable =
                        new Dictionary <RoleValue, Func <Transform, Sequence> >()
                    {
                        [property.Defenser] = t =>
                                              DOTween.Sequence()
                                              .Append(t.DOMove(rightBasePosition, .5f))                      //リールからベースポジションに移動して
                                              .AppendInterval(1f)                                            //1秒待機して
                                              .Append(FightTweenX(t, -1, .2f).SetEase(Ease.InCubic))         //素早く激突して
                                              .Append(t.DOShakePosition(.5f, .2f))
                                              .Append(FightTweenX(t, .5f, .5f))                              //半分くらい戻って
                                              .Append(FightTweenX(t, -.5f, .15f).SetEase(Ease.InCubic))      //また激突して
                                              .AppendInterval(.5f)
                                              .Append(FightTweenX(t, -.2f + .05f, .5f).SetEase(Ease.Linear)) //押して
                                              .Append(FightTweenX(t, .4f + .05f, 1f).SetEase(Ease.Linear))   //押されて
                                              .Append(FightTweenX(t, -.2f, .5f).SetEase(Ease.Linear)),       //中央に戻って

                        [property.Offenser] = t =>
                                              DOTween.Sequence()
                                              .Append(t.DOMove(leftBasePosition, .5f))
                                              .AppendInterval(1f)
                                              .Append(FightTweenX(t, 1, .2f).SetEase(Ease.InCubic))
                                              .Append(t.DOShakePosition(.5f, .2f))
                                              .Append(FightTweenX(t, -.5f, .5f))
                                              .Append(FightTweenX(t, .5f, .15f).SetEase(Ease.InCubic))
                                              .AppendInterval(.5f)
                                              .Append(FightTweenX(t, -.2f - .05f, .5f).SetEase(Ease.Linear)) //押されて
                                              .Append(FightTweenX(t, .4f + .05f, 1f).SetEase(Ease.Linear))   //押して
                                              .Append(FightTweenX(t, -.2f, .5f).SetEase(Ease.Linear)),       //中央に戻って
                    };


                    return(sqProvider.CreateFromProvider(firstAntagonistSelectorTable)
                           .AppendInterval(0.5f)
                           .Append(sqProvider.Create(fightSelectorTable))
                           .Append(sqProvider.CreateBackToReelSequence(property.WinRole, .5f)));

                    //戦闘フィールドのX方向の長さに対してmultiple倍だけ動くTweenを取得する
                    Tween FightTweenX(Transform transform, float multiple, float duration) =>
                    transform.DOMoveX(centerToFighterLength * multiple, duration).SetRelative();
                }