ページ 11

アクションサンプルプログラムのことで2つ質問があるのですが

Posted: 2015年4月07日(火) 19:55
by sadora3
http://homepage2.nifty.com/natupaji/DxL ... Sample.cpp
ここのサンプルプログラムについて質問があります。

一つ目はActMain関数の中の

コード:

        // 1/60秒立つまで待つ
        while( GetNowCount() - FrameStartTime < 1000 / 60 ){}

        // 現在のカウント値を保存
        FrameStartTime = GetNowCount() ;
これについてなのですが、なにをやっているのかサッパリわかりません。
これの意味を教えて欲しいです。


二つ目はCharMove関数の中の

コード:

    // 先ず上下移動成分だけでチェック
    {
        // 左下のチェック、もしブロックの上辺に着いていたら落下を止める
        if( MapHitCheck( *X - hsize, *Y + hsize, &Dummy, &MoveY ) == 3 ) *DownSP = 0.0F ;

        // 右下のチェック、もしブロックの上辺に着いていたら落下を止める
        if( MapHitCheck( *X + hsize, *Y + hsize, &Dummy, &MoveY ) == 3 ) *DownSP = 0.0F ;

        // 左上のチェック、もしブロックの下辺に当たっていたら落下させる
        if( MapHitCheck( *X - hsize, *Y - hsize, &Dummy, &MoveY ) == 4 ) *DownSP *= -1.0F ;

        // 右上のチェック、もしブロックの下辺に当たっていたら落下させる
        if( MapHitCheck( *X + hsize, *Y - hsize, &Dummy, &MoveY ) == 4 ) *DownSP *= -1.0F ;

        // 上下移動成分を加算
        *Y += MoveY ;
    }
ここの部分ですが、これ上辺と下辺が逆になってませんか?

Re: アクションサンプルプログラムのことで2つ質問があるのですが

Posted: 2015年4月07日(火) 20:23
by softya(ソフト屋)
逆に質問ですが、GetNowCount() と FrameStartTimeってそれぞれ何の値でしょうか?
引くことで何が求められますか?

それと2Dの座標系は画面下が+なので、
> ここの部分ですが、これ上辺と下辺が逆になってませんか?
逆じゃないと思います。

Re: アクションサンプルプログラムのことで2つ質問があるのですが

Posted: 2015年4月07日(火) 23:53
by sadora3
GetNowCount・・・Windowsが起動してからの時間(単位:ミリ秒)
FrameStartTime・・・一番最初に入る値がプログラム開始時のGetNowCountの値で、以降がよく分かりません。
引くことにより求まるのは、以前のFrameStartTimeへの代入から、何ミリ秒経過したかでしょうか。
GetNowCount関数のサンプル見て分かったのですが、「while( GetNowCount() - FrameStartTime < 1000 / 60 ){}」はコメント通り、1/60秒立つまで待つ処理なのですね。つまりゲームスピードを抑えているのでしょうか。でもこの部分をコメントアウトしても、体感的には速さは全く変わってなかったのですが。
WaitTimer(1000/60)と同じ意味ですよね。なぜこんな紛らわしい書き方をしているのでしょうか・・・?

上辺と下辺が逆じゃないということは、プレイヤーが四角だったとして、下(地面との接地部分)が上辺になるのですか?

Re: アクションサンプルプログラムのことで2つ質問があるのですが

Posted: 2015年4月08日(水) 00:01
by softya(ソフト屋)
>体感的には速さは全く変わってなかったのですが。

120FPSのモニタを使うと変わると思いますよ。
あと昔のXPなどのOSなら変化したでしょうね。

>上辺と下辺が逆じゃないということは、プレイヤーが四角だったとして、下(地面との接地部分)が上辺になるのですか?
// 左下のチェック、もしブロックの上辺に着いていたら落下を止める
これだとプレーヤーの左下が、マップの上辺と接触するという意味に私は見えますね。

Re: アクションサンプルプログラムのことで2つ質問があるのですが

Posted: 2015年4月08日(水) 00:22
by sadora3
あーなるほど!
勘違いしていました・・・すみません。
回答ありがとうございまいた。