0

Unity で 2D ゲームを作っていますが、あなたの助けが必要です。

写真のように9色のドットをランダムに作るゲームです。プレーヤーは、対応する色でドットを接続する必要があります。これはすべて私がしました。

問題: あるドットをクリックしてすぐに別のドットに移動して接続するとすぐに接続されず、約 1 秒後に接続されます。あるポイントをクリックして 1 秒ほど押したまま、次のポイントにすばやく移動すると、接続されます。

つまり、最初のポイントまたは 2 番目のポイントを待つ必要があります。

結局のところ、これはすべてコライダーと Raycast によるものです。彼にはチェックする時間がありません。

私のコードの例(非常に短縮)

Vector3 startPos;
Vector3 endPos;

Vector3 mousePos;
Vector2 mousePos2D;
RaycastHit2D hit;

void Update() {

mousePos = Camera.main.ScreenToWorldPoint (Input.mousePosition);
mousePos2D = new Vector2 (mousePos.x, mousePos.y);
hit = Physics2D.Raycast (mousePos2D, Vector2.zero);

// Here comes the creation of the first point and the connection 
if (Input.GetMouseDown(0)) {
if (hit.collider != null) {
color = hit.collider.tag;
startPos = hit.collider.transform.position;
endPos = mousePos2D;
}
}

// Here comes the creation line between dots 
if (Input.GetMouse(0)) {
if (hit.collider != null) {
if (hit.collider.tag == color) {
endPos = hit.collider.transform.position;
// Here is instantiated new line and with startPos and endPos and I set
startPos = endPos;
endPos = mousePos2D;
}
}
}

// Here points are deleted if connected 
if (Input.GetMouseUp(0)) {
    // Nothing important
}
}

問題は、「Input.GetMouseDown(0)」で、マウスがオブジェクトを通過しても「hit.collider is equal null」で、約 1 秒後に hit.collider が null ではなく、カラー タグを付与することです。

ビデオの例: https://www.youtube.com/watch?v=8x6TSBfBIzc

すべてのコード スクリプト: https://drive.google.com/open?id=1QKRInr26acu-E4zXPUf-DbW0h9zbsnUr

期待してこの問題を解決するにはどうすればよいですか?なぜすぐに接続されないのですか?

4

0 に答える 0