クリックした位置にオブジェクトを移動させる【UUJ】

質問:

クリックした位置にプレイヤーオブジェクトをベクトルを加えて飛ばす処理を実装したいです。

クリックした位置 – オブジェクト位置のベクトルの長さを求め正規化しスピードを
掛けた値を力として加えようとしているのですが、2DだとVector2.Normalizeによる正規化が
上手くいきません。
Vector3の場合飛ぶには飛ばさせるのですがz軸の方向に飛んでしまうので2Dで実行すると
背景画像かカメラの背後に隠れて見えなくなってしまうことがあります。
またCamera.ScreenToWorldPointが入力位置の取得にどう必要になってくるか
あわせて教えてもらえるとありがたいです。


回答:

Camera.ScreenToWorldPointはこんな風に使えば良いと思います。
Vector3 touchPos = Input.mousePosition;
touchPos.z = Vector3.Dot(camera.transform.forward, (オブジェクト位置) – camera.transform.position);
touchPos = camera.ScreenToWorldPoint(touchPos);
Vector3 dir = (touchPos – (オブジェクト位置)).normalized;

Vector3に関する箇所をVector2に変えただけだとエラーばかり出てしまいましたが、上手くいきました。

編者注:
Vector2にはNormalize()は無いようです。
おそらく質問者の方はNormalize()を使用しようとしたのではないかと思われます。

Comments

comments

スポンサーリンク
336*280px
336*280px

フォローする

スポンサーリンク
336*280px