コード例 #1
0
    public ScollerMoveIterm(RectTransform sonPanel, RectTransform itemRect, Button button, sbyte index, ClickOn click, ScollerDirect tmpDirect)
        : base(itemRect, index, tmpDirect)
    {
        isHide     = true;
        hidlePanel = sonPanel;



        //UnityEngine.Debug.Log("ScollerMoveIterm  direct ==" + direct);

        hidlePanel.localScale = new Vector2(1, 0);
        parentHeight          = itemRect.rect.height;
        parentWidth           = itemRect.rect.width;

        hidePanelHeigth = hidlePanel.rect.height;
        hidePanelWidth  = hidlePanel.rect.width;



        btnClick = new ClickOn(click);

        //   Button btn = itemRect.GetComponentInChildren<Button>();

        button.onClick.AddListener(BtnClick);


        // targetPos = cellTransform.localPosition;
    }
コード例 #2
0
ファイル: Click.cs プロジェクト: BBoyTin/Tinov_RTS_CV
    void ClickToSelect()
    {
        mousePos1 = Camera.main.ScreenToViewportPoint(Input.mousePosition);

        RaycastHit rayHit;

        if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit, 100, clickableLayer))
        {
            ClickOn clickOnScript = rayHit.collider.GetComponent <ClickOn>();

            if (Input.GetKey(KeyCode.LeftControl))
            {
                if (clickOnScript.currentlySelected == false)
                {
                    selectedObjects.Add(rayHit.collider.gameObject);
                    clickOnScript.currentlySelected = true;
                    clickOnScript.ClickMe();
                }
                else
                {
                    selectedObjects.Remove(rayHit.collider.gameObject);
                    clickOnScript.currentlySelected = false;
                    clickOnScript.ClickMe();
                }
            }
            else
            {
                DeselectObjects();
                selectedObjects.Add(rayHit.collider.gameObject);
                clickOnScript.currentlySelected = true;
                clickOnScript.ClickMe();
            }
        }
    }
コード例 #3
0
ファイル: Click.cs プロジェクト: qst0/42-unity-piscine
    // Update is called once per frame
    void Update()
    {
        // Clear on Right Click
        if (Input.GetMouseButtonDown(1))
        {
            clearSelectedObjects();
        }

        // Select on Left Click
        if (Input.GetMouseButtonDown(0))
        {
            mousePos1 = Camera.main.ScreenToViewportPoint(Input.mousePosition);

            RaycastHit rayHit;

            if (Physics.Raycast(
                    Camera.main.ScreenPointToRay(Input.mousePosition),
                    out rayHit,
                    Mathf.Infinity,
                    SelectableObjectsLayer))
            {
                ClickOn clickOnScript = rayHit.collider.GetComponent <ClickOn>();

                // Additional Select on Left Ctrl
                if (Input.GetKey(KeyCode.LeftControl))
                {
                    if (clickOnScript.currentlySelected == false)
                    {
                        selectedObjects.Add(rayHit.collider.gameObject);
                        clickOnScript.currentlySelected = true;
                        clickOnScript.ClickMe();
                    }
                    else
                    {
                        selectedObjects.Remove(rayHit.collider.gameObject);
                        clickOnScript.currentlySelected = false;
                        clickOnScript.ClickMe();
                    }
                }
                else
                {
                    clearSelectedObjects();

                    selectedObjects.Add(rayHit.collider.gameObject);
                    clickOnScript.currentlySelected = true;
                    clickOnScript.ClickMe();
                }
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            mousePos2 = Camera.main.ScreenToViewportPoint(Input.mousePosition);

            if (mousePos1 != mousePos2)
            {
                SelectObjects();
            }
        }
    }
コード例 #4
0
ファイル: Click.cs プロジェクト: MrBennG/L-f
    void Update()
    {
        if (Input.GetMouseButtonDown(1))
        {
            if (selectedObjects.Count > 0)
            {
                foreach (GameObject obj in selectedObjects)
                {
                    obj.GetComponent <ClickOn>().currentlySelected = false;
                    obj.GetComponent <ClickOn>().ClickMe();
                }

                selectedObjects.Clear();
            }
        }

        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit rayHit;

            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit, Mathf.Infinity, clickablesLayer))
            {
                ClickOn clickOnScript = rayHit.collider.GetComponent <ClickOn>();

                if (Input.GetKey("left ctrl"))
                {
                    if (clickOnScript.currentlySelected == false)
                    {
                        selectedObjects.Add(rayHit.collider.gameObject);
                        clickOnScript.currentlySelected = true;
                        clickOnScript.ClickMe();
                    }
                    else
                    {
                        selectedObjects.Remove(rayHit.collider.gameObject);
                        clickOnScript.currentlySelected = false;
                        clickOnScript.ClickMe();
                    }
                }
                else
                {
                    if (selectedObjects.Count > 0)
                    {
                        foreach (GameObject obj in selectedObjects)
                        {
                            obj.GetComponent <ClickOn>().currentlySelected = false;
                            obj.GetComponent <ClickOn>().ClickMe();
                        }

                        selectedObjects.Clear();
                    }

                    selectedObjects.Add(rayHit.collider.gameObject);
                    clickOnScript.currentlySelected = true;
                    clickOnScript.ClickMe();
                }
            }
        }
    }
コード例 #5
0
 public void Add(ClickOn obj)
 {
     if (selectableObjects.Contains(obj))
     {
         return;
     }
     selectableObjects.Add(obj);
 }
コード例 #6
0
    private void OnMouseUp()
    {
        cardToAttach = this.GetComponent <ClickOn>();

        Debug.Log("Mouse up over panel");

        LayoutRebuilder.ForceRebuildLayoutImmediate(hlg.GetComponent <RectTransform>());
    }
コード例 #7
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit rayHit;

            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit, Mathf.Infinity, clickablesLayer))
            {
                ClickOn ClickOnScript = rayHit.collider.GetComponent <ClickOn>();
            }
        }
    }
コード例 #8
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(1))
        {
            ClearSelection();
        }

        if (Input.GetMouseButtonDown(0))
        {
            mousePos1 = Camera.main.ScreenToViewportPoint(Input.mousePosition);

            RaycastHit rayHit;
            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit, Mathf.Infinity, clickablesLayer))
            {
                ClickOn clickOnScript = rayHit.collider.GetComponent <ClickOn> ();
                if (Input.GetKey("left ctrl"))
                {
                    if (clickOnScript.currentlySelected == false)
                    {
                        selectedObjects.Add(rayHit.collider.gameObject);
                        clickOnScript.currentlySelected = true;
                        clickOnScript.ClickMe();
                    }

                    else
                    {
                        selectedObjects.Remove(rayHit.collider.gameObject);
                        clickOnScript.currentlySelected = false;
                        clickOnScript.ClickMe();
                    }
                }
                else
                {
                    ClearSelection();

                    selectedObjects.Add(rayHit.collider.gameObject);
                    clickOnScript.currentlySelected = true;
                    clickOnScript.ClickMe();
                }
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            mousePos2 = Camera.main.ScreenToViewportPoint(Input.mousePosition);

            if (mousePos1 != mousePos2)
            {
                SelectObjects();
            }
        }
    }
コード例 #9
0
ファイル: Click.cs プロジェクト: qst0/42-unity-piscine
 private void clearSelectedObjects()
 {
     if (selectedObjects.Count > 0)
     {
         foreach (GameObject obj in selectedObjects)
         {
             ClickOn objClickOnScript = obj.GetComponent <ClickOn>();
             objClickOnScript.currentlySelected = false;
             objClickOnScript.ClickMe();
         }
         selectedObjects.Clear();
     }
 }
コード例 #10
0
ファイル: Click.cs プロジェクト: TwarochUNIT/panthers-game
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit rayHit;

            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit, Mathf.Infinity, clickablesLayer))
            {
                ClickOn clickOnScript = rayHit.collider.GetComponent <ClickOn>();
                clickOnScript.selected = !clickOnScript.selected;
                selectedname           = rayHit.collider.gameObject.name;
                Debug.Log(rayHit.collider.gameObject.name);

                if (selectedname != null)
                {
                    selectedObject = GameObject.Find(selectedname);
                    Debug.Log("Selected Object Position is " + selectedObject.transform.position);
                    selectedObjectCoords = selectedObject.transform.position;
                    selectionIndicator.transform.position = new Vector3(selectedObjectCoords.x, selectedObjectCoords.y - 0.2f, selectedObjectCoords.z);
                    unitSelected = true;

                    //can't find the gameobject that is the parrent of the selected object for some reason
                    // = selectedObject.parent.gameObject;
                }
            }
        }
        if (Input.GetMouseButtonDown(1) && unitSelected == true)
        {
            //if (unitSelected = true)

            RaycastHit rayHit;
            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit, Mathf.Infinity, terrainLayer))
            {
                Debug.Log(rayHit.collider.gameObject.name);
                moveHexCoords = new Vector3(rayHit.collider.transform.position.x, rayHit.collider.transform.position.y, rayHit.collider.transform.position.z);
                moveIndicator.transform.position = new Vector3(moveHexCoords.x, moveHexCoords.y + 0.5f, moveHexCoords.z);
                //draw line between selected object and marker
                Debug.DrawLine(moveIndicator.transform.position, selectedObject.transform.position, Color.red, 2.5f);

                //
                Vector3 targetDir = moveIndicator.transform.position - selectedObject.transform.position;
                float   angle     = Vector3.Angle(moveIndicator.transform.position, selectedObject.transform.position);
                angleBetween = angle;
                selectedObject.transform.Rotate(0.0f, 45.0f, 0.0f, Space.World);
            }
            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit, Mathf.Infinity, Enemy))
            {
                Debug.Log("shooting");
            }
        }
    }
コード例 #11
0
    void Update()
    {
        if (Input.GetMouseButtonDown(1))
        {
            ClearSelection();
        }

        if (Input.GetMouseButtonDown(0))
        {
            mousePos1 = Camera.main.ScreenToViewportPoint(Input.mousePosition);
            RaycastHit rayHit;

            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit, Mathf.Infinity, clickablesLayer))
            {
                ClickOn clickOnScript = rayHit.collider.GetComponent <ClickOn>();
                if (Input.GetKey("left ctrl"))
                {
                    if (clickOnScript.currentlySelected == false)
                    {
                        selectedObjects.Add(rayHit.collider.gameObject);
                        clickOnScript.currentlySelected = true;
                        clickOnScript.ClickMe();
                    }
                    else
                    {
                        selectedObjects.Remove(rayHit.collider.gameObject);
                        clickOnScript.currentlySelected = false;
                        clickOnScript.ClickMe();
                    }
                }
                else
                {
                    ClearSelection();
                    selectedObjects.Add(rayHit.collider.gameObject);
                    clickOnScript.currentlySelected = true;
                    clickOnScript.ClickMe();
                }
            }
        }

        if (Input.GetMouseButtonUp(0) && Input.GetKey("left shift"))
        {
            mousePos2 = Camera.main.ScreenToViewportPoint(Input.mousePosition);
            //todo make it harder to accidently deselect perhaps hold shift and click
            if (Vector3.Distance(mousePos1, mousePos2) > 0.02f)
            {
                SelectObjects();
            }
        }
    }
コード例 #12
0
ファイル: Click.cs プロジェクト: qst0/42-unity-piscine
    private void SelectObjects()
    {
        List <GameObject> remObjects = new List <GameObject>();

        if (Input.GetKey(KeyCode.LeftControl) == false)
        {
            clearSelectedObjects();
        }

        Rect selectRect = new Rect(mousePos1.x, mousePos1.y,
                                   mousePos2.x - mousePos1.x,
                                   mousePos2.y - mousePos1.y);

        foreach (GameObject obj in selectableObjects)
        {
            if (obj != null)
            {
                if (selectRect.Contains(Camera.main.WorldToViewportPoint(obj.transform.position), true))
                {
                    selectedObjects.Add(obj);
                    ClickOn objClickOnScript = obj.GetComponent <ClickOn>();
                    objClickOnScript.currentlySelected = true;
                    objClickOnScript.ClickMe();
                }
            }
            else
            {
                remObjects.Add(obj);
            }
        }

        if (remObjects.Count > 0)
        {
            foreach (GameObject obj in remObjects)
            {
                selectableObjects.Remove(obj);
            }
            remObjects.Clear();
        }
    }
コード例 #13
0
    private void LeftMouseUp()
    {
        Vector3 mousePosition = Input.mousePosition;

        endLeftMouse = cameraRaycaster.ScreenToViewportPoint(mousePosition);

        if ((startLeftMouse - endLeftMouse).sqrMagnitude > 0.005f)
        {
            ClearSelection();
            SelectObs();
        }
        else
        {
            bool hitted = Physics.Raycast
                              (ray: cameraRaycaster.ScreenPointToRay(mousePosition),
                              hitInfo: out hitInfo,
                              maxDistance: float.MaxValue,
                              layerMask: Clicklayer);
            if (hitted)
            {
                ClickOn obj = hitInfo.collider.GetComponent <ClickOn>();
                if (obj != null)
                {
                    ClearSelection();
                    obj.Select();
                    selectedObjects.Add(obj);
                }
            }
            else
            {
                Pointer.Instance.PutPointer();
                SelectedActionCallback();
            }
        }

        ResetMousePosition();
    }
コード例 #14
0
    public void MoveUpdate()
    {
        if (TurnLogic.instance.currentCharacter != null)
        {
            clickOnScript = TurnLogic.instance.currentCharacter.GetComponent <ClickOn>();

            if (Input.GetMouseButtonDown(0))
            {
                RaycastHit     rayHit;
                CharacterLogic character;

                //if rayhit hits an object
                if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit, Mathf.Infinity, clickablesLayer))
                {
                    if (rayHit.transform.GetComponent <CharacterLogic>() != null)
                    {
                        string enemy;
                        if (TurnLogic.instance.currentCharacter.transform.tag != "Enemy")
                        {
                            enemy = "Enemy";
                        }
                        else
                        {
                            enemy = "Ally";
                        }

                        if (rayHit.transform.gameObject == TurnLogic.instance.currentCharacter)
                        {
                            character = clickOnScript.gameObject.GetComponent <CharacterLogic>();
                            //toggle on/off select
                            clickOnScript.isSelected = !clickOnScript.isSelected;
                            clickOnScript.ClickMe();

                            //highlight movement options
                            if (clickOnScript.isSelected)
                            {
                                grid.HighlightMovement(grid.grid, Mathf.RoundToInt(clickOnScript.transform.position.x), Mathf.RoundToInt(clickOnScript.transform.position.z), clickOnScript.GetComponent <CharacterLogic>().move, Color.cyan);
                            }
                            else
                            {
                                grid.HighlightMovement(grid.grid, Mathf.RoundToInt(clickOnScript.transform.position.x), Mathf.RoundToInt(clickOnScript.transform.position.z), clickOnScript.GetComponent <CharacterLogic>().move, Color.white);
                            }
                        }

                        if (clickOnScript.isSelected && (rayHit.transform.tag.Equals(enemy)))
                        {
                            if (clickOnScript.GetComponent <CharacterLogic>().WithinRange(rayHit.collider.gameObject) && !TurnLogic.instance.currentCharacter.GetComponent <CharacterLogic>().hasAttacked)
                            {
                                Debug.Log(clickOnScript.GetComponent <CharacterLogic>().Attack(rayHit.collider.gameObject));
                                TurnLogic.instance.currentCharacter.GetComponent <CharacterLogic>().hasAttacked = true;
                                grid.HighlightMovement(grid.grid, Mathf.RoundToInt(clickOnScript.transform.position.x), Mathf.RoundToInt(clickOnScript.transform.position.z), clickOnScript.GetComponent <CharacterLogic>().move, Color.white);
                                clickOnScript.isSelected = false;
                                clickOnScript.ClickMe();
                            }
                            //otherwise deselect
                            else
                            {
                                grid.HighlightMovement(grid.grid, Mathf.RoundToInt(clickOnScript.transform.position.x), Mathf.RoundToInt(clickOnScript.transform.position.z), clickOnScript.GetComponent <CharacterLogic>().move, Color.white);
                                clickOnScript.isSelected = false;
                                clickOnScript.ClickMe();
                            }
                        }
                        else if (rayHit.transform.tag.Equals(enemy))
                        {
                        }
                    }
                }

                //if rayhit doesnt hit an object
                else if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit) && !TurnLogic.instance.currentCharacter.GetComponent <CharacterLogic>().hasMoved)
                {
                    //if selected tile not occupied, un-highlight movement options and move character to clicked spot
                    if ((rayHit.transform.tag != "Ally" || rayHit.transform.tag != "Enemy") && clickOnScript.isSelected)
                    {
                        grid.HighlightMovement(grid.grid, Mathf.RoundToInt(clickOnScript.transform.position.x), Mathf.RoundToInt(clickOnScript.transform.position.z), clickOnScript.GetComponent <CharacterLogic>().move, Color.white);
                        MoveChar(rayHit.point);
                        //TurnLogic.instance.currentCharacter.GetComponent<CharacterLogic>().hasMoved = true;
                        clickOnScript.isSelected = false;
                        clickOnScript.ClickMe();
                        clickOnScript.GetComponent <CharacterLogic>().turnEnd = true;
                    }
                }
            }

            if (TurnLogic.instance.currentCharacter.GetComponent <CharacterLogic>().hasAttacked)
            {
                TurnLogic.instance.endTurn();
            }
        }
    }
コード例 #15
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(2))
        {
            ClearSelection();
        }

        if (Input.GetMouseButtonDown(0))
        {
            mousePos1 = Camera.main.ScreenToViewportPoint(Input.mousePosition);

            // RaycastHit rayHit;

            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit, Mathf.Infinity, clickablesLayer))
            {
                ClickOn clickOnScript = rayHit.collider.GetComponent <ClickOn>();

                if (Input.GetKey("left ctrl"))
                {
                    if (clickOnScript.currentlySelected == false)
                    {
                        selectedObjects.Add(rayHit.collider.gameObject);
                        clickOnScript.currentlySelected = true;
                        clickOnScript.ClickMe();
                    }
                    else
                    {
                        selectedObjects.Remove(rayHit.collider.gameObject);
                        clickOnScript.currentlySelected = false;
                        clickOnScript.ClickMe();
                    }
                }
                else
                {
                    ClearSelection();

                    selectedObjects.Add(rayHit.collider.gameObject);
                    clickOnScript.currentlySelected = true;
                    clickOnScript.ClickMe();
                }
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            mousePos2 = Camera.main.ScreenToViewportPoint(Input.mousePosition);

            if (mousePos1 != mousePos2)
            {
                SelectObjects();
            }
        }

        if (Input.GetMouseButton(1) && selectedUnits.Count > 0)
        {
            var camRay = Camera.main.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(camRay, out rayHit))
            {
                if (rayHit.transform.CompareTag("Ground"))
                {
                    foreach (var selectableObj in selectedUnits)
                    {
                        selectableObj.MoveUnit(rayHit.point);
                    }
                }
                else if (rayHit.transform.CompareTag("EnemyUnit"))
                {
                    foreach (var selectableObj in selectedUnits)
                    {
                        selectableObj.SetNewTarget(rayHit.transform);
                    }
                }
            }
        }
    }
コード例 #16
0
    // Update is called once per frame
    void Update()
    {
        if (move)
        {
            Move();
        }
        if (Input.GetMouseButtonDown(0))
        {
            mousePos1 = Camera.main.ScreenToViewportPoint(Input.mousePosition);


            RaycastHit hit;
            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, Mathf.Infinity, Selectables))
            {
                ClickOn click = hit.collider.GetComponent <ClickOn>();

                if (Input.GetKey("left ctrl"))
                {
                    if (!click.currentlySelected)
                    {
                        selectedObjects.Add(hit.collider.gameObject);
                        click.currentlySelected = true;
                        click.OnClick();
                    }
                    else
                    {
                        selectedObjects.Remove(hit.collider.gameObject);
                        click.currentlySelected = false;
                        click.OnClick();
                    }
                }
                else
                {
                    ClearSelection();
                    selectedObjects.Add(hit.collider.gameObject);
                    click.currentlySelected = true;
                    click.OnClick();
                    Debug.Log(selectedObjects[0]);
                }
            }
            else
            {
                ClearSelection();
            }
        }
        else if (Input.GetMouseButtonDown(1))
        {
            if (selectedObjects.Count > 0)
            {
                MoveObjects();
            }
        }
        if (Input.GetMouseButtonUp(0))
        {
            mousePos2 = Camera.main.ScreenToViewportPoint(Input.mousePosition);
            if (mousePos1 != mousePos2)
            {
                SelectObjects();
                rayh.point = Vector3.zero;
            }
        }
    }
コード例 #17
0
 public void AddClickBack(ClickOn click)
 {
     btnClick = click;
 }
コード例 #18
0
 private void CardToAttach_CardDrop(ClickOn card)
 {
     Debug.Log("Card dropped over play area");
 }
コード例 #19
0
    void Update()
    {
        if (agent != null && agent.isOnNavMesh)
        {
            float dist = agent.remainingDistance;

            if (dist != Mathf.Infinity && agent.pathStatus == NavMeshPathStatus.PathComplete && dist - agent.stoppingDistance <= 0)
            {
                offensivePlaceablesRef.moveToTarget = true;
            }
            else
            {
                offensivePlaceablesRef.moveToTarget = false;
            }
        }

        if (Input.GetMouseButtonDown(0))
        {
            foreach (GameObject selectObjects in selectableObjects)
            {
                clearSelection();
            }
        }

        if (Input.GetMouseButtonDown(1))
        {
            foreach (GameObject unit in selectedObjects)
            {
                offensivePlaceablesRef = unit.GetComponent <OffensivePlaceables>();
                offensivePlaceablesRef.moveToTarget = false;
                agent       = unit.GetComponent <NavMeshAgent>();
                agent.speed = 50;
                agent.SetDestination(GetPointUnderCursor());
            }
        }

        //Shoots a ray and if it hits a unit makes the unit selected
        if (Input.GetMouseButtonDown(0))
        {
            mousePos1 = Camera.main.ScreenToViewportPoint(Input.mousePosition);

            RaycastHit rayHit;

            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit, Mathf.Infinity, clickablesLayer, QueryTriggerInteraction.Collide))
            {
                ClickOn clickOnScript = rayHit.collider.GetComponent <ClickOn>();

                if (clickOnScript != null)
                {
                    if (Input.GetKey("left ctrl"))
                    {
                        if (clickOnScript.currentlySelected == false)
                        {
                            selectedObjects.Add(rayHit.collider.gameObject);
                            clickOnScript.currentlySelected = true;
                            clickOnScript.ClickMe();
                        }
                        else
                        {
                            selectedObjects.Remove(rayHit.collider.gameObject);
                            clickOnScript.currentlySelected = false;
                            clickOnScript.ClickMe();
                        }
                    }
                    else
                    {
                        clearSelection();

                        selectedObjects.Add(rayHit.collider.gameObject);
                        clickOnScript.currentlySelected = true;
                        clickOnScript.ClickMe();
                    }
                }
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            mousePos2 = Camera.main.ScreenToViewportPoint(Input.mousePosition);

            if (mousePos1 != mousePos2)
            {
                SelectObjects();
            }
        }
    }
コード例 #20
0
 private void Start()
 {
     destination = transform.position;
     unit        = GetComponent <ClickOn>();
     panel       = BuildingPanel.instance;
 }
コード例 #21
0
    // Update is called once per frame
    void Update()
    {
        RaycastHit rayHit;

        // rightclick
        if (Input.GetMouseButtonUp(1))
        {
            // get clicked point in the world
            Physics.Raycast(
                Camera.main.ScreenPointToRay(Input.mousePosition),
                out rayHit
                );

            // find closest point on nav mesh within 5u
            NavMeshHit navHit;
            var        found = NavMesh.SamplePosition(
                rayHit.point,
                out navHit,
                5f,
                NavMesh.AllAreas
                );

            if (!found)
            {
                Debug.LogError("couldn't find suitable point");
                return;
            }
            // move selected agents to point and reset selection
            if (selectedObjects.Count > 0)
            {
                foreach (var obj in selectedObjects)
                {
                    obj.selected = false;
                    obj.SetDestination(navHit.position);
                }

                selectedObjects.Clear();
            }
        }
        // left click
        else if (Input.GetMouseButtonDown(0))
        {
            // find clicked object
            var found = Physics.Raycast(
                Camera.main.ScreenPointToRay(Input.mousePosition),
                out rayHit,
                clickableLayer
                );

            if (!found)
            {
                return;
            }
            ClickOn clickOnScript = rayHit.collider.gameObject.GetComponent <ClickOn>();
            if (clickOnScript == null)
            {
                return;
            }

            // toggle the clicked object
            if (!clickOnScript.selected)
            {
                selectedObjects.Add(clickOnScript);
            }
            else
            {
                selectedObjects.Remove(clickOnScript);
            }
            clickOnScript.selected = !clickOnScript.selected;
        }
    }
コード例 #22
0
    // Update is called once per frame
    void Update()
    {
        anim = GetComponent <Animator> ();


        agent = GetComponent <NavMeshAgent> ();
        ClickOn clickOnScript = GetComponent <ClickOn> ();
        Click   clickScript   = Camera.main.GetComponent <Click> ();

        if (clickOnScript.currentlySelected == true)
        {
            if (Input.GetMouseButtonDown(0))
            {
                Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);            // promień kamera-pozycja myszy
                RaycastHit hitInfo;
                if (Physics.Raycast(ray.origin, ray.direction, out hitInfo))                   // promień jebnął w coś czy nie ^

                {
                    Vector3 targetPosition = new Vector3(Mathf.Round(hitInfo.point.x), Mathf.Round(hitInfo.point.y), Mathf.Round(hitInfo.point.z));

                    targetMarker.SetActive(true);
                    anim.SetBool("move", true);
                    tppc = clickScript.selectedObjects.IndexOf(gameObject);

                    if (tppc <= 5)
                    {
                        tpp = clickScript.selectedObjects.IndexOf(gameObject) * 3;
                        tpx = targetPosition.x + tpp;
                        tpy = targetPosition.y;
                        tpz = targetPosition.z;
                    }

                    if (tppc <= 10 && tppc > 5)
                    {
                        tpp = (clickScript.selectedObjects.IndexOf(gameObject) - 5) * 3;
                        tpx = targetPosition.x + tpp;
                        tpy = targetPosition.y;
                        tpz = targetPosition.z - 3;
                    }

                    if (tppc <= 15 && tppc > 10)
                    {
                        tpp = (clickScript.selectedObjects.IndexOf(gameObject) - 10) * 3;
                        tpx = targetPosition.x + tpp;
                        tpy = targetPosition.y;
                        tpz = targetPosition.z - 6;
                    }

                    if (tppc <= 20 && tppc > 15)
                    {
                        tpp = (clickScript.selectedObjects.IndexOf(gameObject) - 15) * 3;
                        tpx = targetPosition.x + tpp;
                        tpy = targetPosition.y;
                        tpz = targetPosition.z - 9;
                    }

                    if (tppc < 25 && tppc > 20)
                    {
                        tpp = (clickScript.selectedObjects.IndexOf(gameObject) - 20) * 3;
                        tpx = targetPosition.x + tpp;
                        tpy = targetPosition.y;
                        tpz = targetPosition.z - 12;
                    }

                    if (tppc < 30 && tppc > 25)
                    {
                        tpp = (clickScript.selectedObjects.IndexOf(gameObject) - 25) * 3;
                        tpx = targetPosition.x + tpp;
                        tpy = targetPosition.y;
                        tpz = targetPosition.z - 15;
                    }

                    if (tppc < 35 && tppc > 30)
                    {
                        tpp = (clickScript.selectedObjects.IndexOf(gameObject) - 30) * 3;
                        tpx = targetPosition.x + tpp;
                        tpy = targetPosition.y;
                        tpz = targetPosition.z - 18;
                    }

                    if (tppc < 40 && tppc > 35)
                    {
                        tpp = (clickScript.selectedObjects.IndexOf(gameObject) - 35) * 3;
                        tpx = targetPosition.x + tpp;
                        tpy = targetPosition.y;
                        tpz = targetPosition.z - 21;
                    }

                    Vector3 tmp = new Vector3(tpx, tpy, tpz);

                    targetMarker.transform.position = tmp;



                    agent.destination = tmp;
                }
            }
        }
        if (Vector3.Distance(transform.position, targetMarker.transform.position) < 2.0001f)                    // usuwanie znacznika przy 1 jednostce
        {
            targetMarker.SetActive(false);
            anim.SetBool("move", false);
        }
        if (clickOnScript.currentlySelected == false)
        {
            targetMarker.SetActive(false);
        }
    }
コード例 #23
0
ファイル: Click.cs プロジェクト: ilyatsykunov/Cybercraft
    void Update()
    {
        if (selectedObjects.Count > 0)
        {
            if (selectedObjects[0].GetComponent <Human>() != null)
            {
                WC.ActivateScreen(selectedObjects[0].GetComponent <Human>().screen);
                WC.ChangeText(selectedObjects[0].GetComponent <Human>().nameToDisplay, selectedObjects[0].GetComponent <Human>().infoToDisplay);
            }
        }


        if (Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject())
        {
            pc.CancelEverything();
            mousePos1 = Camera.main.ScreenToViewportPoint(Input.mousePosition);
            RaycastHit rayHit;

            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit, Mathf.Infinity, clickablesLayer))
            {
                WC.ActivateScreen(rayHit.collider.GetComponent <Human>().screen);
                WC.ChangeText(rayHit.collider.GetComponent <Human>().nameToDisplay, selectedObjects[0].GetComponent <Human>().infoToDisplay);
                ClickOn clickOnScript = rayHit.collider.GetComponent <ClickOn>();

                if (Input.GetKey(KeyCode.LeftShift))
                {
                    if (clickOnScript.currentlySelected == false)
                    {
                        selectedObjects.Add(rayHit.collider.gameObject);
                        clickOnScript.currentlySelected = true;
                        clickOnScript.ClickMe();
                    }
                    else
                    {
                        selectedObjects.Remove(rayHit.collider.gameObject);
                        clickOnScript.currentlySelected = false;
                        clickOnScript.ClickMe();
                    }
                }
                else
                {
                    ClearSelection();

                    selectedObjects.Add(rayHit.collider.gameObject);
                    clickOnScript.currentlySelected = true;
                    clickOnScript.ClickMe();
                }
            }
            else if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit, Mathf.Infinity, clickableEnemiesLayer))
            {
                ClickOn clickOnScript = rayHit.collider.GetComponent <ClickOn>();
                WC.ActivateScreen(rayHit.collider.GetComponent <Human>().screen);
                WC.ChangeText(rayHit.collider.GetComponent <Human>().nameToDisplay, rayHit.collider.GetComponent <Human>().infoToDisplay);
                WC.AssignButtons(rayHit.collider.gameObject);
                ClearSelection();
                if (rayHit.collider.gameObject.GetComponent <ClickOn>() != null)
                {
                    selectedObjects.Add(rayHit.collider.gameObject);
                    rayHit.collider.gameObject.GetComponent <ClickOn>().currentlySelected = true;
                    rayHit.collider.gameObject.GetComponent <ClickOn>().ClickMe();
                }
            }
            else if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out rayHit, Mathf.Infinity, obstaclesLayer))
            {
                ClickOn clickOnScript = rayHit.collider.GetComponent <ClickOn>();
                if (rayHit.collider.tag == "Building")
                {
                    WC.ActivateScreen(rayHit.collider.GetComponent <Building>().screen);
                    WC.ChangeText(rayHit.collider.GetComponent <Building>().nameToDisplay, rayHit.collider.GetComponent <Building>().infoToDisplay);
                    WC.ChangePercentageBar(rayHit.collider.gameObject);
                    WC.AssignButtons(rayHit.collider.gameObject);
                    ClearSelection();
                    if (rayHit.collider.gameObject.GetComponent <ClickOn>() != null)
                    {
                        selectedObjects.Add(rayHit.collider.gameObject);
                        rayHit.collider.gameObject.GetComponent <ClickOn>().currentlySelected = true;
                        rayHit.collider.gameObject.GetComponent <ClickOn>().ClickMe();
                    }
                }
            }
            else
            {
                ClearSelection();
                WC.ActivateScreen(WC.buildScreen);
                WC.ChangeText("", "");
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            mousePos2 = Camera.main.ScreenToViewportPoint(Input.mousePosition);

            if (mousePos1 != mousePos2)
            {
                SelectObjects();
            }
        }

        if (Input.GetKeyDown(KeyCode.Escape))
        {
            ClearSelection();
            WC.ActivateScreen(WC.buildScreen);
            WC.ChangeText("", "");
        }
    }