コード例 #1
0
ファイル: Inventory.cs プロジェクト: ZrbTz/Droids
    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);
    }
コード例 #2
0
ファイル: Wrecker.cs プロジェクト: ZrbTz/Droids
 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;
     }
 }