1
我正在嘗試製作關卡編輯器,以便用戶可以在其中放置要放置拼貼的位置。下面是代碼:如何在Unity中使用鼠標位置在2D網格上放置圖塊?
using UnityEngine;
using System.Collections;
public class TilePlacement : MonoBehaviour {
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update() {
if (Input.GetMouseButtonDown (0)) {
var clickPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0f);
clickPos = Camera.main.ScreenToWorldPoint (clickPos);
clickPos.z = 0f;
clickPos.x = Mathf.FloorToInt (clickPos.x);
clickPos.y = Mathf.FloorToInt (clickPos.y);
clickPos.x /= 3.2f;
clickPos.y /= 3.2f;
clickPos.x = Mathf.Round (clickPos.x);
clickPos.y = Mathf.Round (clickPos.y);
clickPos.x *= 3.2f;
clickPos.y *= 3.2f;
var go = new GameObject();
go.AddComponent<SpriteRenderer>();
go.GetComponent<SpriteRenderer>().sprite = Sprite.Create(new Texture2D(32, 32), new Rect(0, 0, 32, 32), new Vector2(0, 0));
go.transform.localScale = new Vector3 (10f, 10f, 0f);
go.transform.position = clickPos;
}
}
}
此代碼放置磚,但是用戶必須在瓷磚和改變clickPos公式的左下角點擊似乎過於複雜,我認爲這是一個更好的辦法做到這一點。請幫我解決這兩個問題
即時通訊使用正交相機在2D中,但問題是我的對象是10,10,1的規模,但他們是3.2單位寬因爲他們的像素數 –
我相信這是最方便的,如果你想讓他們所有比例爲1,1,1,然後在導入設置中更改像素每個單位以使它們適合統一。因此,如果您的精靈是32 x 32像素,將像素每個單位設置爲32,並縮放到1,他們將完美適合一個Unity網格單元格。如果您在不同尺度之間轉換時遇到問題,這隻會讓您的數學變得更容易。 – Xarbrough
謝謝你的回答! –