私の2Dゲームプロジェクトでキャラクターの前方回転をシミュレートする必要があります。キャラクターの回転とマウスクリックポイントへの移動
私は移動スクリプトを作成しようとしましたが、完全には動作しません。理由は私の2Dアクターは宇宙船であり、彼の軸の周りに回転をさせることはできませんが、私はそれのために正回転をする必要があります。ここ
この移動の2つの部分です。
- アクタは、前に戻って元の位置に戻る必要があります(半径は最適または事前定義されている必要があります)。
- アクタは、マウスのクリック位置を使用して直線で移動する必要があります。
So。私はUnityエンジンを使用します。それを解放するためにいくつかの説明が必要です。
ありがとうございました!
UPD:私の現在のソースコード:
using UnityEngine;
using System.Collections;
public class Move : MonoBehaviour {
\t public float speed = 1.5f;
\t public float rotationSpeed = 90f;
\t private Vector3 pos;
\t private Quaternion qTo;
\t void Start() {
\t \t pos = transform.position;
\t \t qTo = transform.rotation;
\t }
\t void Update() {
\t \t if (Input.GetMouseButtonDown(0) || Input.GetMouseButton(0)) {
\t \t \t pos = Input.mousePosition;
\t \t \t pos.z = transform.position.z - Camera.main.transform.position.z;
\t \t \t pos = Camera.main.ScreenToWorldPoint(pos);
\t \t }
\t \t var dir = pos - transform.position;
\t \t if (dir != Vector3.zero) {
\t \t \t qTo = Quaternion.LookRotation(Vector3.forward, pos - transform.position);
\t \t \t transform.rotation = Quaternion.RotateTowards (transform.rotation, qTo, Time.deltaTime * rotationSpeed);
\t \t }
\t \t transform.position = Vector3.MoveTowards(transform.position, pos, Time.deltaTime * speed);
\t }
}
があなたの船がambiturnerありませんか?反時計回りではなく、時計回りに回転しないのはなぜですか?いずれにしても、ゲームを書くには数学の理解が必要です。これのどの部分に悩まされていますか? 2つのベクトルを加えることができれば、これは簡単なはずです。 –
** "C#またはJavascriptでコードを提供してください" **本当に?あなたは400以上の評判を持っていますが、このサイトの仕組みはまだ分かりません...あなたはコードを提供していません。さて、努力をしてもコードが機能しないとすれば、私たちはあなたを助けることができます。 – Programmer
@Programmer申し訳ありませんが私は間違って言った。修正されました。 – xercool