Exemplo n.º 1
0
        public override void Update(GameTime gameTime)
        {
            // 中心を新しくセット
            transform.CenterPosition = radius;

            // スケールを毎フレーム代入(transform.Scaleがプロパティでrefが使えないため)
            transform.Scale = currentScale;
            EagingScale();

            collision = new CircleCollision(CompVector2.ScaleConversion(currentScale, radius).X, transform);

            // プレイヤーの移動
            PlayerMove();

            // 任意の分裂
            Division(ref futureScale, ref currentScale, transform.Position);

            // クランプ
            transform.Position = Clamp(transform.Position, CompVector2.ScaleConversion(currentScale, radius));


            // デバッグ用
#if DEBUG
            if (input.IsKeyDown(Keys.T))
            {
                // スケール係数を1ずつ足す
                futureScale += new Vector2(1f);
            }
#endif
        }
Exemplo n.º 2
0
        public override void Update(GameTime gameTime)
        {
            transform.CenterPosition = radius;

            // 大きさ
            transform.Scale = currentScale;
            EagingScale();

            // 半径が変わるので当たり判定も1フレーム毎にチェック
            collision = new CircleCollision(CompVector2.ScaleConversion(currentScale, radius).X, transform);

            // 移動
            Move();

            // 任意の分裂
            Division(ref futureScale, ref currentScale, transform.Position);

            // クランプ
            transform.Position = Clamp(transform.Position, CompVector2.ScaleConversion(currentScale, radius));

#if DEBUG
            // デバッグ用
            if (input.IsKeyDown(Keys.A))
            {
                isDead = true;
            }
#endif
        }
Exemplo n.º 3
0
        public Food(GameManager gameManager)
            : base(gameManager)
        {
            id  = ObjectID.Food;
            Tag = CharacterID.Food;
            drawStruct.textureName = CharacterID.Food;

            // Foodの色を決定
            drawStruct.color = new Color(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255));
            radius           = 4f;

            // 中心座標を決定
            drawStruct.centerPos = new Vector2(radius);

            // 初期座標を設定
            transform.Position = new Vector2(random.Next((int)radius, Screen.MapWidth), random.Next((int)radius, Screen.MapHeight));

            // 丸い当たり判定を付ける
            collision = new CircleCollision(radius, transform);
        }
Exemplo n.º 4
0
        public override void Update(GameTime gameTime)
        {
            collision = new CircleCollision(CompVector2.ScaleConversion(scale, radius).X, transform);

            transform.CenterPosition = radius;

            transform.Scale = scale;


            if (findFoodInterval <= findFoodCount && GetScene == SceneID.GamePlay)
            {
                // 餌が近くにないか探す
                FindFood();

                // インターバル + 0.1秒した値よりカウントが大きくなったらリセット
                if (findFoodInterval + 10 <= findFoodCount)
                {
                    findFoodCount = 0;
                }
            }
            findFoodCount++;

            // エネミーのモードによって行動を決定
            switch (mode)
            {
            // 通常行動
            case EnemyMoveMode.NormalMove:
                EnemyMove(gameTime);
                break;

            // 近くに食べ物が見つかればこの行動に移る
            case EnemyMoveMode.EatMove:
                FoodEatMove();
                break;
            }

            transform.Position = Clamp(transform.Position, CompVector2.ScaleConversion(scale, radius));
        }
 public override bool OnCollide(Collision one, Collision two)
 {
     this.one = (CircleCollision)one;
     this.two = (CircleCollision)two;
     return(Vector2.Distance(this.one.GetTransform.Position, this.two.GetTransform.Position) < this.one.Radius + this.two.Radius);
 }