グリッドを使用せずにワールドにオブジェクトを追加できるゲームを作成します。今私は歩道を作りたい。 「歩道を作成する」をクリックすると、レイキャスター位置にワールド上のポイントを追加できます。最初のポイントを追加すると、ワールドに2番目のポイントを追加できます。これらの2つのオブジェクトが配置されているとき。ライン/歩道は、第1の点から第2の点まで見ることができる。2つの3Dポイント間でBoxGeometryを整列します
THREE.Line
と私はこれを本当に簡単に行うことができます。コードを参照してください:
var lineGeometry = new THREE.Geometry();
lineGeometry.vertices.push(new THREE.Vector3(x1,0,z1), new THREE.Vector3(x2,0,z2));
lineGeometry.computeLineDistances();
var lineMaterial = new THREE.LineBasicMaterial({ color: 0xFF0000 });
var line = new THREE.Line(lineGeometry, lineMaterial);
scene.add(line);
しかし、私は単純な行にテクスチャを追加することはできません。今私はメッシュで何か同じことをしたい。私は最初の点の位置と2番目の点のレイキャスターの位置を持っています。私はまた、歩道の長さの2つのオブジェクトの間に長さがあります。しかし、私はどのように私は必要な回転を得ることができるか分からない。
注意。私はLookAt
について何かを見ました、これは多分良いアイデアですか、どのようにメッシュでこれを使うことができますか?
footpathオブジェクトの正しい回転を手助けできる人はいますか?
私はfoodpathメッシュのために、このコードを使用します。
var loader = new THREE.TextureLoader();
loader.load('images/floor.jpg', function (texture) {
var geometry = new THREE.BoxGeometry(10, 0, 2);
var material = new THREE.MeshBasicMaterial({ map: texture, overdraw: 0.5 });
var footpath = new THREE.Mesh(geometry, material);
footpath.position.copy(point2);
var direction = // What can I do here?
footpath.rotation.y = direction;
scene.add(footpath);
});
私はdirection
の正しい回転を取得したいです。
[UPDATE] WestLangleyのコードは大いに役立ちます。しかし、それはすべての方向で動作しません。私はこのコードを長さに使用しました:
var lenght = footpaths[i].position.z - point2.position.z;
長さはすべての方向で機能しますか?
読む[この](http://stackoverflow.com/a/41678777/4045502)返事をし、そのjsfiddleを見て例。 '.lookAt()'とポイント間のコネクタに関するものです。 – prisoner849
距離が動的である場合は、 'length = 'を1に設定する方がいいです(' var geometry = new THREE.BoxGeometry(width、height、1); ')、' footpah.scale.z = point1.distanceTo(point2) '。私の前のコメントからの関連する答えにあります。そしてWestLangleyは正解です。答えが出てから質問を変えるのは良い方法ではありません。 – prisoner849