示例#1
0
    public GameSceneState CreateState()
    {
        var ballInitState = ballRender.GetRender().CreateState(new Vector2(ballInstantiatePos.x, canvasRect.sizeDelta.y));
        var barInitState  = barRender.Target.CreateState();

        return(new GameSceneState {
            ballInitState = ballInitState,
            ballState = new [] { ballInitState }.ToList(),
            ballGenerator = BallGenerator.RandomPos(100, 200),
            barState = barInitState,
            barInitState = barInitState,
            canvasSize = canvasRect.sizeDelta,
            uiState = uiRender.Target.CreateState(),
        });
    }
示例#2
0
    /// <summary>
    ///   ボールの間隔、x座標に関してランダムにボールを生成します。これは、ゲームが実行中のみ機能します。
    /// </summary>
    static GameSceneState MaybeRandomGenerateBall(GameSceneState state)
    {
        if (state.gameState != GameState.Playing)
        {
            return(state);
        }

        var latestBall = GetLast(state.ballState);
        var nextPos    = state.ballGenerator?.MaybeGenerate(state.canvasSize, latestBall);

        if (nextPos.HasValue)
        {
            state.ballGenerator = BallGenerator.RandomPos(50, 300);
            var ballXPos = state.barState.movePos.GetPos(RandomEnum <BarPosition> .GetRandom()).x;
            // ボールを生成する(yの相対位置、x方向はランダム)
            var ballPos = new Vector2(ballXPos, latestBall.position.y + nextPos.Value);
            var newBall = state.ballInitState;
            newBall.movesBall = true;
            newBall.position  = ballPos;

            state.ballState.Add(newBall);
        }
        return(state);
    }