私はUnityを使用してゲームを作っていますが、少し問題があります。私はワールドスペースでマウスの位置を知る必要があります。このコードを使用してマウス位置にGameObjectを設定しようとしています。 :ワールドスペースでマウス位置を取得
Vector3 p = Input.mousePosition;
Vector3 pos = Camera.main.ScreenToWorldPoint(p);
testGameObject.transform.position = pos;
それはエディタで魔法のように動作しますが、exeファイル/ APKで、ゲームオブジェクトがマウスに従うdosn't:
マウスをたどるはずのGameObjectは円の中の "1"です
あなたの主な問題は、2Dと3Dの違いを理解することです。マウスカーソルは2D平面(画面平面)上を移動しているため、実際の位置は実際にはありません(実際には、画面平面に限定した3番目の座標があります)。観客の目の(想像された)点から画面上のマウスカーソルの位置まで光線を撃つと、単一の点ではなくビームが得られます。これで、シーン内のすべてのオブジェクトとそのビームの交点を計算し、そのオブジェクトを画面に最も近いものにする必要があります。これには解析的ジオメトリが含まれます。 – Psi
@Psi私は実際にはわかりませんが、 'Camera.main.ScreenToWorldPoint(p);'がレイを射撃せずに最初のヒットポイントを返すと驚いています。 – George
@ George AFAIKは、実際のオブジェクトであれば、シーン内のどこに位置するかのようにマウスカーソルの3D位置を返します。しかし、これは画面平面上の3次元位置です。 マウスカーソルがどこを指しているかを知りたいときは、カーソルが特定の線に沿ったすべての点(目とカーソルの間の光線、無限に広がっている点)を指していると正確に言わなければなりません。 – Psi