プロフィール

Author:Sgt.Shirase
まうまう

最近の記事

カテゴリー

月別アーカイブ

最近のコメント

最近のトラックバック

コメントもどき
(引用、返事が不要な方はコメント頭に*を付けてください。)

名前
本文

Ads by Google

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

わっつあばうと『きゃっちま』

このページはサークル『スマイルキッチン』によるPC用お絵かきチャットゲームっぽいソフト『きゃっちま』の開発状況をつらつらと書くところでした。
ルールは単純
出題者が何のお題を指定されて描いているかを残りの人が当てるだけ。ええ、アレです。

サイトを統合しました。以後『きゃっちま』の最新情報はこのサイトを見て下さい。
『きゃっちま製作者blog』へ

【C#】 例外処理(try catch)で未割り当てのローカル変数

                HttpWebResponse res = null;
                try
                {
                    res = req.GetResponse() as HttpWebResponse;
       }
                catch (WebException we)
                {
                    if (we.Status == WebExceptionStatus.ProtocolError)
                    {
                        if (res.StatusCode == HttpStatusCode.Forbidden)
                        {
                            MessageBox.Show("403");
                            Environment.Exit(-1);
                        }
                    }
                }
既定のコンストラクタを持たないクラスで生成時に例外が発生するような場合
tryスコープの中でしかオブジェクト生成出来ない。
とりあえず null を入れておけば未割り当てとは言われない。

【XNA】 FPS的な回転について

Vector3.Up と Vector3.Right を軸に回転すればいい。
横方向の回転はWrap、縦方向の回転はClampしてやる。
回転を保存するフィールド Vector2 Player.Angle があるとするならば、

public class Stage1 : Scene , IGameScene
{
    public void Update(GameTime gameTime)
    {
        // ...
        Player.Angle += PadState.RightStick;
        // ...
        player.Update(gameTime);
    }
}

public class Player
{
    public Vector2 Angle;
    // 回転
    public Quaternion RotationQ { get; private set; }

    public void Update(GameTime gameTime)
    {
        Angle.X = MathHelper.WrapAngle(Angle.X);
        Angle.Y = MathHelper.Clamp(Angle.Y, (float)-Math.PI/2, (float)Math.PI/2);

        RotationQ = Quaternion.CreateFromAxisAngle(Vector3.Up, Angle.X)
                * Quaternion.CreateFromAxisAngle(Vector3.Right, Angle.Y);
    }
}

【XNA】 Joypadのスティックとマウス両方での照準移動

まずスティックの状態を代入した後に +=  して丸め込めば
Joypadとマウスどちらでも操作出来るようになるはず。
ただ長さの取得が発生するからメソッドにしないで直接書いた方が再利用出来ていいのかも?

public class InputManager : ManagerBase
{
     float MouseSensi = 0.1f;
     Vector2 RightStick = Vector2.Zero;

     public void Update(GameTime gameTime)
     {
          // ……
          Vector2 RightStick;
          RightStick = gamePadState.ThumbSticks.Right;     // 右スティックの正規化ベクトル
          RightStick += MousePosDiff * MouseSensi;     // マウスの移動量 * マウス感度
          RightStick = RightStick.Clamp2(1f);
     }
}

public static class Vector2Ex
{
    /// <summary>
    /// ベクトルの長さを指定した値に丸める
    /// </summary>
    /// <param name="max">最大値</param>
    public static Vector2 Clamp2(this Vector2 vec, float max)
    {
        float len = vec.Length();
        if (len > max)
        {
            max /= len;
            vec *= max;
        }
        retrun vec;
    }
}

C76について

やっつけ製作所 2日目(土)東Q49a です。多分、無料配布でなんか出ます。
今回作っているゲームをプレイするにはXNA Frameworkが必要です。
製作進行状況的には1ステージ仕上げるのを最終目標とすると55%ぐらいです。


▲ページトップ

FC2Ad

FC2ブログPowered by FC2 Blog