2017-12-30 22 views
2

私はterrain mountain rangeを持っており、カメラフライビューは高さマップの近くに配置されています。カメラは、y軸の動きを許さない標準のキーボードコントロールを使用して制御されます。それはy軸に設定されたままです。地形は均等なレベルではなく、ランダムにレンダリングされるからです。どのように地形高さマップにカメラをつけることができますか?ここにはexampleがあります。以下は、地形をスケールアップするためにレイキャスターを追加しようとする試みです。すべてのコードはプロジェクトのアニメーション機能に含まれています。カメラが地形を拡大しようとしたときに気づいた。あまりにも急な場合、それはまっすぐ進むでしょう。また、それは地形に追従しません。カメラは最高位のままです。このスニペットでThree.jsカメラを地形の高さマップに従う方法を教えてください。

var raycaster = new THREE.Raycaster(camera.position.clone(), new THREE.Vector3(0, -1, 0)); 
raycaster.ray.origin.copy(camera.position); 

var intersections = raycaster.intersectObjects(terrain); 

if (intersections.length > 0){ 

    var distance = intersections[0].distance; 
    if(distance > 0 && distance < 10){ 
     camera.position.y= intersections[0].point.y + 20; 
    } 

} 

答えて

0

if(distance > 0 && distance < 10){ 
    camera.position.y= intersections[0].point.y + 20; 
} 

...> 10までの距離との交差は無視されますが、その後、カメラが地形の上に20に移動されています。私はそれが地面に追いつくことができない理由がそれが落ちるのを疑う。 "あまりにも急な"問題についてはわかりませんが、それは似ている可能性があります...カメラの位置ではなく、最高の地形の高度を上回る高さにレイキャスターを保持してみてください。

問題が解決しない場合は、ライブデモまたは地形のエクスポートを含めることができます。

関連する問題