Esempio n. 1
0
 public void ResetPos()
 {
     state   = LeftState.Idle;
     MoveDir = Vector3.zero;
     rb.ExitMove();
     rf.ExitMove();
     MyEventSystem.PushEventStatic(MyEvent.EventType.ExitMove);
     useMouse = false;
 }
Esempio n. 2
0
    private void Update()
    {
        if (!CanProcessEvent)
        {
            return;
        }

        if (state == RightState.Idle)
        {
            if (WindowMng.windowMng.IsOtherUIOpen())
            {
                return;
            }

#if UNITY_EDITOR || UNITY_STANDALONE
            if (Input.GetMouseButtonDown(0))
            {
                var mousePos = Input.mousePosition;
                if (mousePos.x > Screen.width / 2)
                {
                    state = RightState.Move;
                    rb.EnterMove();
                    rf.EnterMove();
                    useMouse = true;

                    rb.SetFingerPos(mousePos);
                    rf.SetFingerPos(mousePos);

                    CalculateShootDir();
                    //MyEventSystem.myEventSystem.PushEvent(MyEvent.EventType.EnterShoot);
                    enterTime = Time.time;
                }
            }
            else
#endif
            {
                foreach (var touch in Input.touches)
                {
                    fingerId = touch.fingerId;
                    //if (fingerId > 0 && fingerId < Input.touchCount)
                    if (touch.phase == TouchPhase.Began)
                    {
                        if (Input.GetTouch(fingerId).position.x > Screen.width / 2)
                        {
                            state = RightState.Move;

                            var fp = Input.GetTouch(fingerId).position;
                            rb.EnterMove();
                            rf.EnterMove();
                            useMouse = false;
                            rb.SetFingerPos(fp);
                            rf.SetFingerPos(fp);
                            CalculateShootDir();
                            //MyEventSystem.myEventSystem.PushEvent(MyEvent.EventType.EnterShoot);
                            enterTime = Time.time;
                            break;
                        }
                    }
                }
            }
        }
        else
        {
            if (Time.time - enterTime > 0.0f && enterTime != 0)
            {
                MyEventSystem.myEventSystem.PushEvent(MyEvent.EventType.EnterShoot);
                enterTime = 0;
            }

            if (WindowMng.windowMng.IsOtherUIOpen())
            {
                state = RightState.Idle;
                rb.ExitMove();
                rf.ExitMove();
                useMouse = false;
                MyEventSystem.PushEventStatic(MyEvent.EventType.ExitShoot);
                return;
            }

#if UNITY_EDITOR || UNITY_STANDALONE
            if (useMouse)
            {
                if (!Input.GetMouseButton(0))
                {
                    state = RightState.Idle;
                    rb.ExitMove();
                    rf.ExitMove();
                    useMouse = false;
                    var exit = new MyEvent()
                    {
                        type    = MyEvent.EventType.ExitShoot,
                        boolArg = !rb.IsCancel(),
                    };

                    MyEventSystem.myEventSystem.PushEvent(exit);

                    /*
                     * if (!rb.IsCancel())
                     * {
                     *  //MyEventSystem.PushEventStatic (MyEvent.EventType.Shoot);
                     *  GameInterface.gameInterface.PlayerAttack();
                     * }
                     */
                }
                else
                {
                    var mousePos = Input.mousePosition;
                    rb.SetFingerPos(mousePos);
                    rf.SetFingerPos(mousePos);
                    CalculateShootDir();
                }
            }
            else
#endif
            {
                var   find     = false;
                Touch touch    = new Touch();
                var   getTouch = false;
                foreach (var t in Input.touches)
                {
                    if (t.fingerId == fingerId)
                    {
                        touch    = t;
                        getTouch = true;
                        break;
                    }
                }

                if (getTouch)
                {
                    var phase = touch.phase;
                    find = phase == TouchPhase.Ended || phase == TouchPhase.Canceled;
                }
                else
                {
                    find = true;
                }
                if (find)
                {
                    state = RightState.Idle;
                    rb.ExitMove();
                    rf.ExitMove();

                    var exit = new MyEvent()
                    {
                        type    = MyEvent.EventType.ExitShoot,
                        boolArg = !rb.IsCancel(),
                    };
                    MyEventSystem.myEventSystem.PushEvent(exit);

                    /*
                     * if (!rb.IsCancel())
                     * {
                     *  GameInterface.gameInterface.PlayerAttack();
                     * }
                     */
                }
                else
                {
                    var pos = touch.position;
                    rb.SetFingerPos(pos);
                    rf.SetFingerPos(pos);
                    CalculateShootDir();
                }
            }
        }
    }
Esempio n. 3
0
    //绕着尽量攻击
    IEnumerator MoveAndShoot()
    {
        int[] rdV      = new[] { -1, 1 };
        var   passTime = 0.0;
        var   h        = 1;
        var   v        = 1;

        MyEventSystem.PushEventStatic(MyEvent.EventType.EnterShoot);

        var sleepTime = 0.0f;
        var useDun    = false;

        Debug.LogError("StartAI");
        var attPLsit = new List <float>()
        {
            4,
            2,
            1,
        };
        var moveLowList = new List <float>()
        {
            2,
            3,
            4,
        };
        float attackPer  = attPLsit[(int)aiDiff];
        float movePerLow = moveLowList[(int)aiDiff];
        float movePer    = 6;

        while (true)
        {
            if (ObjectManager.objectManager != null)
            {
                var player = ObjectManager.objectManager.GetMyPlayer();
                if (player != null)
                {
                    var enemy = SkillLogic.FindNearestEnemy(player);
                    if (enemy != null)
                    {
                        MyEventSystem.PushEventStatic(MyEvent.EventType.EnterShoot);
                        var dir = enemy.transform.position - player.transform.position;
                        dir.y = 0;
                        dir.Normalize();
                        var sevt = new MyEvent()
                        {
                            type = MyEvent.EventType.ShootDir,
                            vec2 = new Vector2(dir.x, dir.z),
                        };
                        MyEventSystem.myEventSystem.PushEvent(sevt);
                    }
                    if (passTime > attackPer)
                    {
                        var rd = Random.Range(0, 2);
                        h         = rdV[rd];
                        rd        = Random.Range(0, 2);
                        v         = rdV[rd];
                        passTime -= attackPer;
                        try
                        {
                            GameInterface.gameInterface.PlayerAttack();
                        }
                        catch (Exception)
                        {
                        }
                    }

                    sleepTime += Time.deltaTime;

                    if (sleepTime >= movePerLow && sleepTime <= movePer)
                    {
                        var evt = new MyEvent(MyEvent.EventType.MovePlayer);
                        evt.localID = ObjectManager.objectManager.GetMyLocalId();
                        evt.vec2    = new Vector2(0, 0);
                        MyEventSystem.myEventSystem.PushLocalEvent(evt.localID, evt);

                        if (!useDun)
                        {
                            useDun = true;
                            GameInterface_Skill.OnSkill(0);
                        }
                        //yield return null;
                    }
                    else
                    {
                        /*
                         * var evt = new MyEvent(MyEvent.EventType.MovePlayer);
                         * evt.localID = ObjectManager.objectManager.GetMyLocalId();
                         * evt.vec2 = new Vector2(h, v);
                         * evt.vec2.Normalize();
                         * MyEventSystem.myEventSystem.PushLocalEvent(evt.localID, evt);
                         */
                        var v2 = new Vector2(h, v);
                        v2.Normalize();
                        LeftController.Instance.MoveDir = v2;
                    }
                    if (sleepTime > movePer)
                    {
                        sleepTime = 0;
                        useDun    = false;
                    }
                }
            }
            passTime += Time.deltaTime;
            yield return(null);
        }

        Debug.LogError("StopAI");
        MyEventSystem.PushEventStatic(MyEvent.EventType.ExitShoot);
    }
Esempio n. 4
0
    void Update()
    {
        if (!CanProcessEvent)
        {
            return;
        }
        if (state == LeftState.Idle)
        {
            MoveDir = Vector3.zero;
#if UNITY_EDITOR || UNITY_STANDALONE
            if (Input.GetMouseButtonDown(0))
            {
                var mousePos = Input.mousePosition;
                if (mousePos.x < Screen.width / 2)
                {
                    state = LeftState.Move;
                    rb.EnterMove();
                    rf.EnterMove();
                    useMouse = true;

                    rb.SetFingerPos(mousePos);
                    rf.SetFingerPos(mousePos);

                    CalculateShootDir();
                    MyEventSystem.myEventSystem.PushEvent(MyEvent.EventType.EnterMove);
                }
            }
            else
#endif
            {
                foreach (var touch in Input.touches)
                {
                    fingerId = touch.fingerId;
                    //if (fingerId > 0 && fingerId < Input.touchCount)
                    if (touch.phase == TouchPhase.Began)
                    {
                        if (touch.position.x < Screen.width / 2)
                        {
                            state = LeftState.Move;

                            var fp = touch.position;
                            rb.EnterMove();
                            rf.EnterMove();
                            useMouse = false;
                            rb.SetFingerPos(fp);
                            rf.SetFingerPos(fp);
                            CalculateShootDir();
                            MyEventSystem.myEventSystem.PushEvent(MyEvent.EventType.EnterMove);
                            break;
                        }
                    }
                }
            }
        }
        else
        {
#if UNITY_EDITOR || UNITY_STANDALONE
            if (useMouse)
            {
                if (!Input.GetMouseButton(0))
                {
                    state = LeftState.Idle;
                    rb.ExitMove();
                    rf.ExitMove();
                    useMouse = false;
                    MyEventSystem.PushEventStatic(MyEvent.EventType.ExitMove);
                }
                else
                {
                    var mousePos = Input.mousePosition;
                    rb.SetFingerPos(mousePos);
                    rf.SetFingerPos(mousePos);
                    CalculateShootDir();
                }
            }
            else
#endif
            {
                var   find     = false;
                Touch touch    = new Touch();
                var   getTouch = false;
                foreach (var t in Input.touches)
                {
                    if (t.fingerId == fingerId)
                    {
                        touch    = t;
                        getTouch = true;
                        break;
                    }
                }

                if (getTouch)
                {
                    var phase = touch.phase;
                    find = phase == TouchPhase.Ended || phase == TouchPhase.Canceled;
                }
                else
                {
                    find = true;
                }

                if (find)
                {
                    state = LeftState.Idle;
                    rb.ExitMove();
                    rf.ExitMove();
                    MyEventSystem.PushEventStatic(MyEvent.EventType.ExitMove);
                }
                else
                {
                    var pos = touch.position;
                    rb.SetFingerPos(pos);
                    rf.SetFingerPos(pos);
                    CalculateShootDir();
                }
            }
        }
    }