

[[Unity] オブジェクトをドラッグで移動させる -
Qiita](https://qiita.com/Nakatomo/items/7a1491de39a94fa176b0)

上記のようにマウスドラックでオブジェクトを動かしたいのですが、そのまま参考するとマウスの位置にオブジェクトの中心が来てしまいます。オブジェクトの中心がマウスによらないでにマウスドラックで動かしたのですがどうすればいいのでしょうか。


CC BY-SA 4.0
2020-11-25T09:18:09.990
72199
2022-01-14T13:02:45.283
2020-11-25T11:24:38.237
3060
40081
question
c# unity3d
マウスドラッグでオブジェクトの移動をしたい


`Physics.Raycast()` で得られる `hit` にはレイとの接触点のワールド座標 `hit.point`
が含まれているので、これを活用します。

* * *

接触点の奥行きのまま移動させるための値を求めます。

[code]

    private float depth;
    
    depth = Camera.main.transform.InverseTransformPoint(hit.point).z;
    
[/code]

接触点をそのままつまめるよう、対象オブジェクトからの相対位置ベクトルを求めます。

[code]

    private Vector3 offset;
    
    offset = hit.point - this.transform.point;
    
[/code]

移動させる時にこれらの値を反映させます。

[code]

    Vector3 mousePos = Input.mousePosition;
    mousePos.z = depth;
    
    moveTo = Camera.main.ScreenToWorldPoint(mousePos);
    transform.position = moveTo - offset;
    
[/code]


CC BY-SA 4.0
2020-11-28T10:06:47.973
72257
2020-11-28T10:06:47.973
14817
72199
answer