INPUT(PAD編)
■XBOX360用PADをPCに接続、このためにPADを買ってしまいました。
XBOX360のパッド以外は動作が保障されないので、持っている他のPADでは反応しませんでした。
namespace WindowsGame { public class Game1 : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; ContentManager content; private SpriteBatch sprite; private Texture2D texture; private Vector2 myPos = new Vector2(0, 0); public Game1() { graphics = new GraphicsDeviceManager(this); content = new ContentManager(Services); } protected override void LoadGraphicsContent(bool loadAllContent) { if (loadAllContent) { sprite = new SpriteBatch(graphics.GraphicsDevice); texture = content.Load<Texture2D>("mimi"); } } protected override void Update(GameTime gameTime) { padInput(); base.Update(gameTime); } protected override void Draw(GameTime gameTime) { graphics.GraphicsDevice.Clear(Color.CornflowerBlue); sprite.Begin(); sprite.Draw(texture, myPos, Color.White); sprite.End(); base.Draw(gameTime); } /// <summary> /// PAD入力 /// </summary> private void padInput() { myPos += GamePad.GetState(PlayerIndex.One).ThumbSticks.Left; } } }
■アナログ制御
■左アナログスティックの状態取得(ThumbSticks.Left)
myPos += GamePad.GetState(PlayerIndex.One).ThumbSticks.Left;
■右アナログスティックの状態取得(ThumbSticks.Right)
myPos += GamePad.GetState(PlayerIndex.One).ThumbSticks.Right;
■デジタルPAD情報取得(DPad)
if (GamePad.GetState(PlayerIndex.One).DPad.Down == ButtonState.Pressed) myPos.Y++; if (GamePad.GetState(PlayerIndex.One).DPad.Up == ButtonState.Pressed) myPos.Y--; if (GamePad.GetState(PlayerIndex.One).DPad.Right == ButtonState.Pressed) myPos.X--; if (GamePad.GetState(PlayerIndex.One).DPad.Left == ButtonState.Pressed) myPos.X--;
■「LT」「RT」アナログ値取得
myPos.X += GamePad.GetState(PlayerIndex.One).Triggers.Left; myPos.X -= GamePad.GetState(PlayerIndex.One).Triggers.Right;
if (GamePad.GetState(PlayerIndex.One).Buttons.A == ButtonState.Pressed) // A if (GamePad.GetState(PlayerIndex.One).Buttons.B == ButtonState.Pressed) // B if (GamePad.GetState(PlayerIndex.One).Buttons.X == ButtonState.Pressed) // X if (GamePad.GetState(PlayerIndex.One).Buttons.Y == ButtonState.Pressed) // Y if (GamePad.GetState(PlayerIndex.One).Buttons.Start == ButtonState.Pressed) // START if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) // BACK if (GamePad.GetState(PlayerIndex.One).Buttons.LeftShoulder == ButtonState.Pressed) // if (GamePad.GetState(PlayerIndex.One).Buttons.LeftStick == ButtonState.Pressed) // 左アナログスティックを押しだ if (GamePad.GetState(PlayerIndex.One).Buttons.RightShoulder == ButtonState.Pressed) // if (GamePad.GetState(PlayerIndex.One).Buttons.RightStick == ButtonState.Pressed) // 右アナログスティックを押した