private void Start()
 {
     if (QuickOutline == null)
     {
         QuickOutline = GetComponent <QuickOutline>();
     }
 }
    void Start()
    {
        _outline = GetComponent <QuickOutline>();

        _originalPosition = transform.position;
        _originalRotation = transform.rotation;
    }
Beispiel #3
0
    public void startTowerMode()
    {
        towerMode = true;
        buildablePlane.SetActive(true);
        if (tempTower.activeSelf)
        {
            tempTower.SetActive(false);
        }
        cancelBuildTowerButton.SetActive(true);

        if (focusTower != null)
        {
            towerOperatePanel_Prepare.transform.localScale = Vector3.zero;

            QuickOutline towerOutline = focusTower.GetComponent <QuickOutline>();
            towerOutline.enabled = false;
            Transform OneScopePlaneTransform = focusTower.transform.Find("scopePlane");
            OneScopePlaneTransform.gameObject.SetActive(false);
            focusTower = null;
        }
    }
Beispiel #4
0
    private void Start()
    {
        capsuleColl           = GetComponent <CapsuleCollider>();
        capsuleColl.isTrigger = true;

        // 다른 Scene에 있는 플레이어 GO를 찾아, 플레이어 GO를 필요로 하는
        // 타임라인(실질적으로는 Playable Director 컴포넌트)에 바인딩.
        if (GameObject.FindWithTag("Player"))
        {
            GameObject player = GameObject.FindWithTag("Player");

            // 오두막 안으로 들어가는 타임라인부터 할당.
            // 트랙 정보는 Timeline에 있기 때문에 PlayableDirector 컴포넌트에서 할당되어 있는 TimelineAsset을 가져온다.
            // PlayableAsset 클래스가 TimelineAsset의 부모(슈퍼) 클래스이기 때문에 형변환 가능.
            TimelineAsset tmp = comeIn.playableAsset as TimelineAsset;
            // PlayableDirector.SetGenericBindding(a, b) a = 오브젝트(b)를 바인딩할 트랙, b = 트랙(a)에 바인딩할 오브젝트.
            // TimelineAsset.GetOutputTrack(n) n = 타임라인에 있는 n+1번째 트랙을 반환한다. (인덱스는 0부터 시작하니깐)
            comeIn.SetGenericBinding(tmp.GetOutputTrack(2), player);

            // 오두막 밖으로 나가는 타임라인에 할당.
            tmp = comeOut.playableAsset as TimelineAsset;
            comeOut.SetGenericBinding(tmp.GetOutputTrack(0), player);

            // 보스와 닥터 타임라인에 할당.
            tmp = timeline.playableAsset as TimelineAsset;
            timeline.SetGenericBinding(tmp.GetOutputTrack(2), player.GetComponentInChildren <Camera>().gameObject);
        }

        if (comeIn.GetComponent <QuickOutline>())
        {
            leftOutline = comeIn.GetComponent <QuickOutline>();
        }
        if (comeOut.GetComponent <QuickOutline>())
        {
            rightOutline = comeOut.GetComponent <QuickOutline>();
        }

        forwardTrigger.SetActive(false);
    }
Beispiel #5
0
 void Start()
 {
     outline         = this.transform.Find("Outline Box").GetComponent <QuickOutline>();
     outline.enabled = false;
 }
Beispiel #6
0
    // Update is called once per frame
    void Update()
    {
        if (loadedflag_inner)
        {
            //Debug.Log("gamestep情况:"+gameStep);
            if (gameStep == 0)
            {
                if (towerMode)
                {
                    foreach (GameObject tower in GeneralPool.get_towerList())
                    {
                        if (tower.tag == "Tower")
                        {
                            Collider towerColli = tower.GetComponent <Collider>();
                            if (towerColli != null)
                            {
                                tower.GetComponent <Collider>().enabled = false;
                            }
                        }
                    }
                    //创建一条从摄像机到触摸位置的射线
                    Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition); // 定义射线
                    RaycastHit rayHit;
                    if (Physics.Raycast(ray, out rayHit, 200))                          // 参数1 射线,参数2 碰撞信息, 参数3 碰撞层
                    {
                        //Debug.Log(rayHit.collider.gameObject.name);
                        if (rayHit.collider.gameObject.tag == "BuildablePlane")
                        {
                            Vector3 hitpoint          = rayHit.point;
                            float   hitpoint_x        = hitpoint.x;
                            float   hitpoint_y        = hitpoint.y;
                            float   hitpoint_z        = hitpoint.z;
                            float   hitpoint_x_center = Mathf.Floor(hitpoint_x) + 0.5f;
                            float   hitpoint_z_center = Mathf.Floor(hitpoint_z) + 0.5f;
                            tempTower.transform.position = new Vector3(hitpoint_x_center, hitpoint_y, hitpoint_z_center);
                            if (!tempTower.activeSelf)
                            {
                                tempTower.SetActive(true);
                            }

                            if (CheckGuiRaycastObjects())
                            {
                                return;
                            }
                            if (Input.GetMouseButtonDown(0))//建塔
                            {
                                if (tempTower.activeSelf)
                                {
                                    if (GeneralPool.coins >= tempTowerComp.towerPrice)
                                    {
                                        uiHelper.updateCoinCountText(GeneralPool.coins);
                                        GameObject realTower = Instantiate(towerPrefab, tempTower.transform.position, new Quaternion());

                                        realTower.transform.parent = TowerParent;
                                        Tower realTowerComp = realTower.GetComponent <Tower>();
                                        realTowerComp.setRoundWhenCreated(currentRound);
                                        GameObject realTowerScopePlane = realTowerComp.getScopePlane();
                                        realTowerScopePlane.SetActive(false);
                                        List <Vector3> realTowerScopePlanePos = realTowerComp.getScopePlanePosList();
                                        displayScopePlane.DisplayScopeOfTower(realTowerScopePlanePos, realTowerScopePlane.transform);
                                        GeneralPool.addToTowerList(realTower);
                                        GeneralPool.addToTowerAndBPDict(realTower, rayHit.collider.gameObject);
                                        rayHit.collider.gameObject.SetActive(false);
                                        GeneralPool.coins -= realTowerComp.towerPrice;
                                        uiHelper.updateCoinCountText(GeneralPool.coins);
                                        //Debug.Log(rayHit.collider.gameObject.name);
                                    }
                                    else
                                    {
                                        Debug.Log("金币不足");
                                        uiHelper.ShowAlarm("金币不足");
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (tempTower.activeSelf)
                            {
                                //Debug.Log("nothing");
                                tempTower.SetActive(false);
                            }
                        }
                    }
                }
                else//非TowerMode
                {
                    //非TowerMode中所有塔都可以被点击,要先全设置为碰撞体
                    foreach (GameObject tower in GeneralPool.get_towerList())
                    {
                        if (tower.tag == "Tower")
                        {
                            Collider towerColli = tower.GetComponent <Collider>();
                            if (towerColli != null)
                            {
                                tower.GetComponent <Collider>().enabled = true;
                            }
                        }
                    }

                    if (CheckGuiRaycastObjects())
                    {
                        return;
                    }
                    if (Input.GetMouseButtonDown(0))
                    {
                        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition); // 定义射线
                        RaycastHit rayHit;
                        if (Physics.Raycast(ray, out rayHit, 200))                          // 参数1 射线,参数2 碰撞信息, 参数3 碰撞层
                        {
                            GameObject rayHitObject = rayHit.collider.gameObject;
                            if (rayHitObject.tag == "Tower")//点击塔会显示塔的外轮廓,塔的检测范围,以及塔的选项
                            {
                                if (focusTower == rayHitObject)
                                {
                                    QuickOutline towerOutline = rayHitObject.GetComponent <QuickOutline>();
                                    towerOutline.enabled = false;
                                    focusTower           = null;
                                    //towerOperatePanel_Prepare.transform.localScale = Vector3.zero;
                                }
                                else
                                {
                                    // foreach (GameObject tower in GeneralPool.get_towerList())
                                    // {
                                    //     if (tower.tag == "Tower")
                                    //     {
                                    //         tower.GetComponent<QuickOutline>().enabled = false;
                                    //         Transform OneScopePlaneTransform = tower.transform.Find("scopePlane");
                                    //         OneScopePlaneTransform.gameObject.SetActive(false);
                                    //     }
                                    // }

                                    if (focusTower == null)
                                    {
                                    }
                                    else
                                    {
                                        focusTower.GetComponent <QuickOutline>().enabled = false;
                                        Transform OneScopePlaneTransform = focusTower.transform.Find("scopePlane");
                                        OneScopePlaneTransform.gameObject.SetActive(false);
                                        towerOperatePanel_Prepare.transform.localScale = Vector3.zero;
                                    }
                                    focusTower = rayHitObject;
                                    focusTower.GetComponent <QuickOutline>().enabled = true;
                                }
                                GameObject TowerScopePlane = rayHitObject.transform.Find("scopePlane").gameObject;
                                TowerScopePlane.SetActive(!TowerScopePlane.activeSelf);
                                switchTowerOperatePanel_Prepare(rayHitObject);
                            }
                            else if (rayHitObject.name == "Road1" || rayHitObject.name == "Road2")
                            {
                                Debug.Log("its road");
                            }
                            else
                            {
                                Debug.Log(rayHitObject.name);
                                // foreach (GameObject tower in GeneralPool.get_towerList())
                                // {
                                //     if (tower.tag == "Tower")
                                //     {
                                //         tower.GetComponent<QuickOutline>().enabled = false;
                                //         Transform OneScopePlaneTransform = tower.transform.Find("scopePlane");
                                //         OneScopePlaneTransform.gameObject.SetActive(false);
                                //     }
                                // }
                                if (focusTower != null)
                                {
                                    focusTower.GetComponent <QuickOutline>().enabled = false;
                                    Transform OneScopePlaneTransform = focusTower.transform.Find("scopePlane");
                                    OneScopePlaneTransform.gameObject.SetActive(false);
                                }
                                focusTower = null;

                                towerOperatePanel_Prepare.transform.localScale = Vector3.zero;
                            }
                        }
                    }

                    if (focusTower != null)
                    {
                        towerOperatePanel_Prepare.transform.position = Camera.main.WorldToScreenPoint(focusTower.transform.position);
                    }
                }
            }
            else//在出兵阶段和交战阶段,点击塔可以显示塔的攻击范围,塔名和属性,紧急修复按钮,及技能按钮
            {
                //此时所有塔都可以被点击,要先全设置为碰撞体
                foreach (GameObject tower in GeneralPool.get_towerList())
                {
                    if (tower.tag == "Tower")
                    {
                        Collider towerColli = tower.GetComponent <Collider>();
                        if (towerColli != null)
                        {
                            tower.GetComponent <Collider>().enabled = true;
                        }
                    }
                }
                if (CheckGuiRaycastObjects())
                {
                    return;
                }
                if (Input.GetMouseButtonDown(0))
                {
                    Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition); // 定义射线
                    RaycastHit rayHit;
                    if (Physics.Raycast(ray, out rayHit, 200))                          // 参数1 射线,参数2 碰撞信息, 参数3 碰撞层
                    {
                        GameObject rayHitObject = rayHit.collider.gameObject;
                        if (rayHitObject.tag == "Tower")//点击塔会显示塔的外轮廓,塔的检测范围,以及塔的选项
                        {
                            if (focusTower == rayHitObject)
                            {
                                QuickOutline towerOutline = rayHitObject.GetComponent <QuickOutline>();
                                towerOutline.enabled = false;
                                focusTower           = null;
                                //towerOperatePanel_Prepare.transform.localScale = Vector3.zero;
                            }
                            else
                            {
                                // foreach (GameObject tower in GeneralPool.get_towerList())
                                // {
                                //     if (tower.tag == "Tower")
                                //     {
                                //         tower.GetComponent<QuickOutline>().enabled = false;
                                //         Transform OneScopePlaneTransform = tower.transform.Find("scopePlane");
                                //         OneScopePlaneTransform.gameObject.SetActive(false);
                                //     }
                                // }

                                if (focusTower == null)
                                {
                                }
                                else
                                {
                                    focusTower.GetComponent <QuickOutline>().enabled = false;
                                    Transform OneScopePlaneTransform = focusTower.transform.Find("scopePlane");
                                    OneScopePlaneTransform.gameObject.SetActive(false);
                                    towerOperatePanel_Battle.transform.localScale = Vector3.zero;
                                }
                                focusTower = rayHitObject;
                                focusTower.GetComponent <QuickOutline>().enabled = true;
                            }
                            GameObject TowerScopePlane = rayHitObject.transform.Find("scopePlane").gameObject;
                            TowerScopePlane.SetActive(!TowerScopePlane.activeSelf);
                            switchTowerOperatePanel_Battle(rayHitObject);
                        }
                        else if (rayHitObject.name == "Road1" || rayHitObject.name == "Road2")
                        {
                            Debug.Log("its road");
                        }
                        else
                        {
                            Debug.Log(rayHitObject.name);
                            // foreach (GameObject tower in GeneralPool.get_towerList())
                            // {
                            //     if (tower.tag == "Tower")
                            //     {
                            //         tower.GetComponent<QuickOutline>().enabled = false;
                            //         Transform OneScopePlaneTransform = tower.transform.Find("scopePlane");
                            //         OneScopePlaneTransform.gameObject.SetActive(false);
                            //     }
                            // }
                            if (focusTower != null)
                            {
                                focusTower.GetComponent <QuickOutline>().enabled = false;
                                Transform OneScopePlaneTransform = focusTower.transform.Find("scopePlane");
                                OneScopePlaneTransform.gameObject.SetActive(false);
                            }
                            focusTower = null;

                            towerOperatePanel_Battle.transform.localScale = Vector3.zero;
                        }
                    }
                }

                if (focusTower != null)
                {
                    towerOperatePanel_Battle.transform.position = Camera.main.WorldToScreenPoint(focusTower.transform.position);
                }
                else
                {
                    towerOperatePanel_Battle.transform.localScale = Vector3.zero;
                }
            }
        }
        else//loadedflag_inner为false,说明资源还未全部加载完成
        {
        }
    }
 void Start()
 {
     player  = FirstPersonCamera.player;
     anim    = GetComponent <Animation>();
     outline = GetComponent <QuickOutline>();
 }