private void nextStep() { if (m_wallWalkingState == WallWalkingState.none) { calGotoWallParam(); m_wallWalkingState = WallWalkingState.gotoWall; } else if (m_wallWalkingState == WallWalkingState.gotoWall) { calClimbParam(); m_wallWalkingState = WallWalkingState.climbWall; m_pFSM.animator.SetBool(hashid_isUpWall, true); } else if (m_wallWalkingState == WallWalkingState.climbWall) { m_pFSM.animator.SetBool(hashid_isUpWall, false); calWalkWallParam(); m_wallWalkingState = WallWalkingState.wallWalking; } else if (m_wallWalkingState == WallWalkingState.wallWalking) { m_wallWalkingState = WallWalkingState.down; Vector3 angle = m_pFSM.transform.eulerAngles; angle.z = 0.0f; m_pFSM.transform.eulerAngles = angle; m_pFSM.animator.SetBool(hashid_isDownWall, true); } else { stopWallWalk(); } }
public bool startWalkPos(Vector3 wallStartPos, Vector3 wallEndPos, float wallWidth, float walkLength, float walkHeight, Vector3 faceDirection) { if (!calWallWalkPos(wallStartPos, wallEndPos, wallWidth, walkLength, walkHeight, faceDirection)) { return(false); } bWallWalking = true; m_wallWalkingState = WallWalkingState.none; m_pFSM.animator.SetBool(hashid_isWallWalking, true); m_pFSM.animator.SetBool(hashid_isUpWall, false); m_pFSM.animator.SetBool(hashid_isDownWall, false); nextStep(); updateStep(); return(true); }
private void stopWallWalk(bool forceStop = false) { Vector3 angle = m_pFSM.transform.eulerAngles; angle.z = 0.0f; m_pFSM.transform.eulerAngles = angle; if (m_wallWalkingState < WallWalkingState.down && !forceStop) { m_wallWalkingState = WallWalkingState.down; m_pFSM.animator.SetBool(hashid_isDownWall, true); } else { m_pFSM.ChangeState((int)EntityState.Standing, IntPtr.Zero); } }