/// <summary> /// 位置補正 /// </summary> private void SetDisplayModify() { float setModifyX = -Position.X + (Screen.WIDTH / 2 - Width / 2); float setModifyY = -Position.Y + (Screen.HEIGHT / 2); //x方向の画面端の処理 if (Position.X < Screen.WIDTH / 2 - Width / 2 + BlockSize.WIDTH) //+BlockSize.WIDTHを外すと一番左のブロックも見えます { setModifyX = -BlockSize.WIDTH; //-BlockSize.WIDTHを0にすると一番左のブロックも見えます } else if (Position.X > mediator.MapSize().X - Screen.WIDTH / 2 - Width / 2 - BlockSize.WIDTH) //-BlockSize.WIDTHを外すと一番右のブロックも見えます { setModifyX = -(mediator.MapSize().X - Screen.WIDTH / 2 - Width / 2) + (Screen.WIDTH / 2 - Width / 2 + BlockSize.WIDTH); //+BlockSize.WIDTHを外すと一番右のブロックも見えます } //y方向 マップの一番下のブロック以下が見えないようにする if (Position.Y > mediator.MapSize().Y - Screen.HEIGHT / 2 - BlockSize.HEIGHT) // -BlockSize.HEIGHTを外すと一番下のブロックも見えます。 { setModifyY = -(mediator.MapSize().Y - Screen.HEIGHT - BlockSize.HEIGHT); // -BlockSize.WIDTHを外すと一番下のブロックも見えます。 } gameDevice.SetDisplayModify(new Vector2(setModifyX, setModifyY)); }
/// <summary> /// 位置補正 /// </summary> private void setDisplayModify() { //中心で描画するよう補正値を設定 gameDevice.SetDisplayModify(new Vector2(-position.X + (Screen.Width / 2 - width / 2), 0.0f)); //Playerのx座標が画面の中心より左なら見切れてるので、Vector2.Zeroで設定しなおす if (position.X < Screen.Width / 2 - width / 2) { gameDevice.SetDisplayModify(Vector2.Zero); } //右端は画面2.5画面を越えたら3画面目が出るよう2画面分のx座標で補正する //if (position.X > Screen.Width * 2 + (Screen.Width / 2 - width / 2)) //{ //gameDevice.SetDisplayModify(new Vector2( // -(48 * 32 - Screen.Width / 2 - width / 2) + (Screen.Width / 2 - width / 2), // 0.0f)); // gameDevice.SetDisplayModify(new Vector2(-Screen.Width * 2, 0)); //} if (position.X > mediator.MapSize().X - Screen.Width / 2 - width / 2) { gameDevice.SetDisplayModify(new Vector2(-(mediator.MapSize().X - Screen.Width / 2 - width / 2) + (Screen.Width / 2 - width / 2), 0.0f)); } }