private void MovePreview(TowerItem towerItem) { Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2f, Screen.height / 2f, 0f)); LayerMask tmpIgnoreLayers = ~towerItem.GetLayerMask(); RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo, 20f, tmpIgnoreLayers)) { if (hitInfo.collider.gameObject.layer == LayerMask.NameToLayer("Ground") && Vector3.Dot(hitInfo.normal, Vector3.up) > 0.9) { GameObject prefab = towerItem.GetPlaceableItemPrefab(); BoxCollider box = prefab.GetComponent <BoxCollider>(); int boxlayerMask = ~LayerMask.GetMask("AreaEffect", "Projectile", "Item", "Ground"); Collider[] boxHit = Physics.OverlapBox(hitInfo.point + box.center, box.size / 2, Quaternion.identity, boxlayerMask, QueryTriggerInteraction.Ignore); if (boxHit.Length == 0) { previewItem.SetActive(true); previewItem.transform.position = hitInfo.point; previewItem.transform.rotation = Quaternion.FromToRotation(Vector3.up, hitInfo.normal); return; } } } previewItem.SetActive(false); }
private void OnTriggerEnter(Collider other) { if (other.gameObject.CompareTag("Tower") && dropItem.toDrop == null) { Pickable tower = other.gameObject.GetComponent <Pickable>(); //DropItem dropItem = this.gameObject.GetComponent<DropItem>(); TowerItem t = (TowerItem)tower.getItemObject(); dropItem.toDrop = t.GetPlaceableItemPrefab(); //Inventory inventory = this.gameObject.GetComponent<Inventory>(); tower.Interact(this.gameObject); this.gameObject.GetComponent <SphereCollider>().enabled = false; } }