1
我正在製作2D TD遊戲,目前我已經使用quill18教程構建了一個簡單的建築系統。但是,我試圖讓它在我的瓷磚上捕捉,因爲我將它們放在它們上面。將gameObject對齊到網格?
這是我的腳本應用到建築物體
void Update(){
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
mousePos.z = 0;
Vector2 mp = mousePos;
this.transform.position = mousePos;
Collider2D col = GetComponent<Collider2D>();
if (GameManager.instance.player.CanAffordCurrentBuilding()
&& !col.IsTouchingLayers(LayerMask.GetMask("NonBuildingLayer"))
&& col.IsTouchingLayers(LayerMask.GetMask("BuildingLayer"))
&& !col.IsTouchingLayers(LayerMask.GetMask("BlockingLayer"))) {
SpriteRenderer[] sprites = GetComponentsInChildren<SpriteRenderer>();
foreach(SpriteRenderer sr in sprites)
sr .color = Color.green;
canPlace = true;
}
else {
SpriteRenderer[] sprites = GetComponentsInChildren<SpriteRenderer>();
foreach(SpriteRenderer sr in sprites)
sr .color = Color.red;
canPlace = false;
}
if (Input.GetMouseButtonDown (0) && canPlace) {
SpriteRenderer[] sprites = GetComponentsInChildren<SpriteRenderer>();
foreach(SpriteRenderer sr in sprites)
sr .color = Color.white;
Destroy(GetComponent<Rigidbody2D>());
Destroy(this);
GameManager.instance.player.BuildingWasPlaced();
}
這裏做的事情是,如果接觸層是「BuildingLayer」我將能夠把物體與物體總是跟我的鼠標,直到我放好它。但是,我希望它只在觸摸圖層不是BuildingLayer時跟隨我的鼠標。當觸摸圖層是BuildingLayer時,我希望它捕捉到最接近構建圖層的鼠標的圖塊。當我在鼠標周圍移動時不斷更換卡片。
我怎麼能做到這樣的事情? 我有一個名爲網格的列表,其中包含遊戲中的所有建築圖塊(如果有幫助的話)。