protected override void Start() { base.Start(); playerController.PlayerSystemForceAccelerateCloseEvent += OnForceAccelerateCloseEvent; status = GuangTouQiangStatus.Status_SearchPlayer; Invoke("DelaySetCapturePlayer", waitTime); }
//我与障碍物发生碰撞了 public override void OnEventHitBrokenObject() { //UnityEngine.Debug.Log("guangtouqiang"); status = GuangTouQiangStatus.Status_StandBy; playerController.OpenPlayerSystemForceAccelerate(hitDecelerateValue, hitDecelerateDampRate); //重新寻找对象 currentCapturePlayer = null; //播放碰撞动画和语言 playerController.playerAnimator.GuangtouqiangAniCollide(); }
private void DelaySetCapturePlayer() { status = GuangTouQiangStatus.Status_CapturePlayer; //追赶玩家 playerController.playerAnimator.GuangtouqiangAniRandomEvent(); }
private void OnForceAccelerateCloseEvent(object sender, EventArgs e) { status = GuangTouQiangStatus.Status_SearchPlayer; Invoke("DelaySetCapturePlayer", waitTime); }
//抓住熊后播完动画后回调 public void MeCaptureXiongAnimationOver() { status = GuangTouQiangStatus.Status_StandBy; playerController.OpenPlayerSystemForceAccelerate(captureDecelerateValue, captureDecelerateDampRate); }
public override void AIUpdate() { if (status == GuangTouQiangStatus.Status_CapturePlayer) { //检索需要扑捉的玩家 if (currentCapturePlayer == null) { currentCapturePlayer = SelectOneXiong(); //accelerateMaxValue = FTLibrary.Command.FTRandom.NextSingle(accelerateMaxValueMin, accelerateMaxValueMax); accelerateMaxValue = accelerateMaxValueMax; //CapturePlayerLocker.IsLocked = true; } //决策左右方向 playerController.playerTurnDirect = playerController.PlayerLeftOrRight(currentCapturePlayer); //这里不在判断加速方向,直接给予目标玩家的加速度就行 //决策加速度 playerController.playerAccelerateSign = UnityEngine.Mathf.Clamp(currentCapturePlayer.currentPlayerAccelerate, 0.0f, 1.0f); //首先判断是否抓住这个玩家了 //if (!CapturePlayerLocker.IsLocked) //{ // //UnityEngine.Debug.Log("lllll"); // //追击超过一定的值就不追了 // currentCapturePlayer = null; // status = GuangTouQiangStatus.Status_StandBy; // playerController.OpenPlayerSystemForceAccelerate(captureDecelerateValue, // captureDecelerateDampRate); //} if (playerController.currentPlayerAccelerate >= accelerateMaxValue) { //UnityEngine.Debug.Log("nnnnn"); //追击超过一定的值就不追了 currentCapturePlayer = null; status = GuangTouQiangStatus.Status_StandBy; playerController.OpenPlayerSystemForceAccelerate(captureDecelerateValue, captureDecelerateDampRate); } else if (playerController.IsHitThisPlayer(currentCapturePlayer, 0.2f, 1.6f)) { OnEventMeCaptureXiong(currentCapturePlayer); ((PlayerAIControllerXiong)(currentCapturePlayer.playerAIControler)).OnEventGuangTouQiangCaptureMy(playerController); ((IParkourPlayer_Xiong)currentCapturePlayer).OnEventGuangTouQiangCaptureMy(); //UnityEngine.Debug.Log("ccccc"); //光头强扑捉减速 //currentCapturePlayer = null; if (playerController.playerAnimator.delegateGuangtouqiangAniCollideArrestOver == null) { playerController.playerAnimator.delegateGuangtouqiangAniCollideArrestOver = MeCaptureXiongAnimationOver; } status = GuangTouQiangStatus.Status_CaptureOKPlayer; } } else if (status == GuangTouQiangStatus.Status_SearchPlayer) { if (playerController.currentPlayerSteering > 0.1f) { playerController.playerTurnDirect = ParkourPlayerController.PlayerTurnDirect.Turn_Right; } else if (playerController.currentPlayerSteering < -0.1f) { playerController.playerTurnDirect = ParkourPlayerController.PlayerTurnDirect.Turn_Left; } else { playerController.playerTurnDirect = ParkourPlayerController.PlayerTurnDirect.Turn_Mid; } } else if (status == GuangTouQiangStatus.Status_CaptureOKPlayer) { //决策左右方向 playerController.playerTurnDirect = playerController.PlayerLeftOrRight(currentCapturePlayer); //这里不在判断加速方向,直接给予目标玩家的加速度就行 //决策加速度 playerController.playerAccelerateSign = UnityEngine.Mathf.Clamp(currentCapturePlayer.currentPlayerAccelerate, 0.0f, 1.0f); } else if (status == GuangTouQiangStatus.Status_StandBy) { } }