/// <summary> /// 解除抓取关系; /// </summary> /// <param name="clearGraspQuote">将引用置空;</param> /// <param name="status"></param> private void releaseGrapRelation(GraspThrowStatus status) { if (MeController.Me.GrapController != null) { MeController.Me.GrapController.Me.SetGraspedController(null); } MeController.Me.SetGraspController(null); CurStatus = status; }
/// <summary> /// 扔出去; /// </summary> public void Throw() { if (MeController.Me.GrapController != null) { countTime = 0; CurStatus = GraspThrowStatus.Throw; (MeController.Me.Controller as ActionControler).StopWalk(); setActionControllerMoveChangeStatus((MeController.Me.Controller as ActionControler), false, false); StartCoroutine(MeController.AttackController.ThrowDisplay(MeController.Me.GrapController.Me, MeController, Directions.GetOpposite(MeController.Me.CurFaceDire), throwComplete)); } }
/// <summary> /// 抓取; /// </summary> public void Grasp() { //如果当前已经抓取了,就不让抓了; if (MeController.Me.IsGrasp || MeController.Me.IsGrasped) { return; } IList <MonsterDisplay> findMonsters = findNearestMonsters(); BaseDisplay tmpGrapDisplay = null; if (findMonsters.Count > 0) { //搜寻当前状态是否有倒地的; foreach (MonsterDisplay md in findMonsters) { if ((md.Controller.StatuController.CurrentStatu == Status.HURTDOWN || md.Controller.StatuController.CurrentStatu == Status.HURT3 || md.Controller.StatuController.CurrentStatu == Status.HURT4) && md.IsGrasped == false) { tmpGrapDisplay = md; //Debug.Log("找到了倒地的怪物了"); break; } } if (tmpGrapDisplay != null) { //设置抓取者; tmpGrapDisplay.SetGraspedController(MeController); //设置被抓取者; MeController.Me.SetGraspController(tmpGrapDisplay.Controller); setActionControllerMoveChangeStatus((tmpGrapDisplay.Controller as ActionControler), false, false); resetGraspState(); MeController.AttackController.AddGrapDispaly( tmpGrapDisplay, MeController, PlayConst.POS_NECK, true, false); CurStatus = GraspThrowStatus.Grasp; } } }