public void ResetPos() { state = LeftState.Idle; MoveDir = Vector3.zero; rb.ExitMove(); rf.ExitMove(); MyEventSystem.PushEventStatic(MyEvent.EventType.ExitMove); useMouse = false; }
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(); } } } }
//绕着尽量攻击 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); }
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(); } } } }