【发布时间】:2015-09-09 07:20:20
【问题描述】:
我正在制作一个 2D TD 游戏,目前我使用 quill18 教程制作了一个简单的构建系统。但是,当我将鼠标悬停在瓷砖上时,我试图让它卡在我的瓷砖上。
这是我应用于建筑对象的脚本
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 时,我希望它捕捉到最靠近正在构建层的鼠标的图块。并且当我在鼠标周围移动时不断改变捕捉磁贴。
我怎样才能完成这样的事情? 如果有帮助,我有一个名为 grid 的列表,其中包含游戏中的所有建筑图块。
【问题讨论】: