# キャラを地面背景の高さに合わせる

この左画面を左クリックすれば以下の緑色の字のスクリプト全部がクリップボードにコピーされるので、右の画面の緑色の矢印の行で、置き換えて(選択して貼り付けて)ください。

    	if ( _bg.intersect(pos,new Vector3D(0,-1,0)) )
    	{
    		_hero._pos.x = pos.x;
    		_hero._pos.y = pos.y - _bg._distance + 50;
    		_hero._pos.z = pos.z;
    	}

では「制御」→「実行」メニューを実行してください。
地面の背景の高さに合わせてキャラのY座標がぴったりになりました！
これで地面の上を歩いているように見えますね。
この処理は主人公の真下の向き(0,-1,0)に地面があればキャラクターを進められるようにしていますね。
「intersect(origin, dir)」はレイとモデルの交差判定をするメソッドですね。
[origin]レイ(射線。一点から伸びる直線)の開始点。
[dir]レイの方向ベクトル。向きベクトルは正規化(ノーマライズ)する必要がある。
「_bg.intersect」で[dir]が下向きに、つまりモデルから見て重力の下向きにレイを発した時、交差するか判定しますね。
下に三角形があり交差してるならtrueが返りますね。そこでposのY座標に距離「_bg.distance」だけ減算した値がモデルのY座標になりますね。「+50」してるのは地面にめり込まないようにY軸に上方向に浮かせるためですね。

### 次へ