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 }
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 }
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); }
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); }