CarProject Playerクラスについて、考証

Playerクラスを使っている、すべての

オブジェクト(台、車、お城)が初期化関数の影響を受けます

現在、車を横に回転させるため、90度回転させてます

//2021-11-19
    Player::m_rot.y =  -float(XM_PI / 2);//右向き XM_PI 180度のこと

 

m メンバ変数のこと

rot rotationの略 回転を表します

ラジアンが単位になっています

XM_PIは実際は3.14...という数字です

180度を表しています

m_rot.yは、y軸周りの回転するときの角度を

表しています

なんと、気が付かないですが、車、ジャンプ台、お城が

90度回転しています

で、弊害がでています

 

回転しなくてもよいオブジェクト(台、お城)まで

回転しています

回転することによって、うまれる弊害

実は、当たり判定のOBBというBOXですが

いまのところ、回転していません

0になっています、

車の当たり判定がせまくなっていることに

気がつきました

緒方君のおかげです

 

お城の当たりにも影響がでています

で、OBBのUpdateを更新するにあたって

Versionアップしようと思っています、

個別のオブジェクトクラスを作る

当たり判定のOBBを、台などのように

全体Box,お城の門、塀、お城のように

部分(サブメッシュ)ごとのBox

でとれるよう改善していきたいと思います

いつ頃になるかは、わかりませんが

また、少しづつなめらかな

走行ができるように、ベクトルの導入をしていきたいと

思います

3校に間に合わないかも

せめて、アイテムをとりましょう

 

クラスとは

class CPlayer{

変数

float x;

関数

void Init(){

  x=0;

}

void Move(){

  x=x + 1;

}

};

クラスの実体 playerオブジェクト

   class CPlayer player;

  関数呼び出し

   player.Init();//x=0;

 player.Move();//x=x + 1; xは1 になる

 

またはplayerインスタンス

 class CPlayer* player=new CPlayer();

   player->Init();//x=0;

   player->Move();//x=x + 1;  xは1になる

 

 xを直接呼出しは、できない

 ゲッター関数で呼び出す

 float x=GetX();

 セッター関数で値をセットする

   x=x+1;

   SetX(x);

または、オブジェクトのインスタンス

てにいれることができれば、値を更新できます

 

ゲッター、セッター関数

float GetX(){

return Player::x;

}

セッター関数 xに引数の値fxをいれる

void SetX(float fx){

 Player::x=fx;

}  

 

インスタンスゲッター関数

CPlayer player;

CPlayer* GetPlayer(){

  return &player;

}

 

別のプログラムで

ヘッダー宣言

#include "Player.h"

 

プログラムの関数中で

CPlayer* player=GetPlayer();

player->Init();

player->Move();

変数がよびだせないのは、

classの中にいる場合、みえません

privateといって、非公開になっています

これは、クラスのコンセプトです

変数は、非公開 private

関数は公開 public

他のプログラムが更新できないようになっています

クラスの中の、関数でのみ、更新できます

ということで、変数の値が、他のプログラムで直接更新できないために

クラスの信頼性があがります、

 

今後のPlayerクラスの歩み

PlayerクラスをCObjectクラスに進化させる

個別のクラスを作成

class CPlayer:public CObject

class CJumpRamp:public CObject

class CCastle:CObject

CObjectから、いろんなクラスを作ります

これで、いろんな、バッティングをふせぎたいと思います

例)

class CNekoがあるとき

class CNekoを親

class CMikeを子

子は、親のものを引き継ぐことができます