public void OnStepMoved(StepData step, float duration)
        {
            Vector2 piecePixelPos = this.playerPiece.LocalPixelPosition;
            Vector2 piecePos = Roga2dUtils.pixelToLocal(new Vector2(piecePixelPos.x, piecePixelPos.y));
            Vector2 movePos = Roga2dUtils.pixelToLocal(new Vector2(step.PosX + 16, step.PosY + 16));
            Vector2 cameraPos = this.camera.LocalPosition;
            Vector2 cameraFocusPos = Roga2dUtils.pixelToLocal(new Vector2(piecePixelPos.x - 16, piecePixelPos.y - 16));
            Vector2 cameraMovePos = Roga2dUtils.pixelToLocal(new Vector2(step.PosX , step.PosY));

            Roga2dFunc func = new Roga2dFunc(this.onPieceMoved);

            // Move camera and piece at the same time
            Roga2dParallel parallel = new Roga2dParallel(new List<Roga2dBaseInterval> {
                new Roga2dPositionInterval(this.playerPiece, piecePos, movePos, Roga2dUtils.TimeToFrame(duration), true, null),
                new Roga2dPositionInterval(this.camera, cameraFocusPos, cameraMovePos, Roga2dUtils.TimeToFrame(duration), true, null)
            });

            // At first move back to the piece position
            float distance = Vector2.Distance(cameraPos, piecePos);
            float cameraFocusDuration = distance * 0.2f;
            Roga2dSequence sequence = new Roga2dSequence(new List<Roga2dBaseInterval> {
                new Roga2dPositionInterval(this.camera, cameraPos, cameraFocusPos, Roga2dUtils.TimeToFrame(cameraFocusDuration), true, null),
                parallel,
                func
            });

            Roga2dIntervalPlayer.GetInstance().Play(sequence);
        }
示例#2
0
        public Model.MapModel GetModel()
        {
            StepData[] steps = new StepData[5];
            steps[0] = new StepData(1, 100, 250);
            steps[1] = new StepData(2, 100, 300);
            steps[2] = new StepData(3, 100, 350);
            steps[3] = new StepData(4, 100, 400);
            steps[4] = new StepData(5, 100, 450);

            return new Model.MapModel(steps);
        }
示例#3
0
 public MapModel(StepData[] steps)
 {
     this.currentStepId = 1;
     this.steps = steps;
 }
示例#4
0
 private void onStepMoved(StepData step, float duration)
 {
     this.player.startWalkingAnimation();
     this.stage.Scroll(duration);
 }