ページ 11

3Dのゲームで当たると進行方向の逆にちょっと飛ばしたい

Posted: 2021年8月14日(土) 18:11
by make_unique
こんにちは。現在3Dゲームを作っています。
そこで衝突したときに当たった方向の逆に飛ばしたいのですがどういう求め方でできますか?
当たり判定は球と球でやっていて現在は当たっているかどうかは判定できます。

Re: 3Dのゲームで当たると進行方向の逆にちょっと飛ばしたい

Posted: 2021年8月15日(日) 16:32
by あたっしゅ
東上☆海美☆「

viewtopic.php?f=3&t=21268&p=156518&hili ... 81#p156518
上記は 2 次元での例ですが、3 次元でも、原理的に同じみみ。

もっとも、簡単な方法でやるなら、

コード:

class T3d {
protected:
    float x;
    float y;
    float z;
    float vx;
    float vy;
    float vz;
    void swap( float* a, float* b ) {
        float tmp = *a;
        *a = *b;
        *b = tmp;
    }
    void conflict( T3d* obj ) {
        swap( &vx, &(obj->vx) );
        swap( &vy, &(obj->vy) );
        swap( &vz, &(obj->vz) );
    }
public:
    T3d() {}
    virtual ~T3d() {}
};


int main()
{
    printf("Hello World");

    return 0;
}
https://www.onlinegdb.com/
GDB online Debugger でコンパイル確認。

Re: 3Dのゲームで当たると進行方向の逆にちょっと飛ばしたい

Posted: 2021年8月20日(金) 07:53
by あたっしゅ
東上☆海美☆「
 ただ今、自分の環境で、DirectX 12 のプログラムで、
パース表示できるようにする段階で、手間取っているみみ。

 DirectX 12 は、なんにもやらないと、
x, y は -1.0..1.0, z は、0.0..1.0 であること、
等角写像(並行写像)になっちゃうこと
が、わかった事が収穫みみ。

 『北山 洋幸、512 ビットベクトルプログラミング入門 AVX-512 命令を駆使しよう、カットシステム』
を買ったので、将来は、AOS-SOA 変換/SOA-AOS 変換 etc. をやりたい所みみ。