fix: update logic jump move.
This commit is contained in:
@@ -346,6 +346,7 @@ namespace BrewMonster {
|
||||
public bool IsStop() { return m_bStop; }
|
||||
// Get host's last position sent to server
|
||||
public Vector3 GetLastSevPos() { return m_vLastSevPos; }
|
||||
public bool GetSlideLock() { return m_bSlideLock; }
|
||||
}
|
||||
public struct CDR_INFO
|
||||
{
|
||||
|
||||
@@ -92,6 +92,7 @@ namespace BrewMonster
|
||||
private A3DVECTOR3 g_vOrigin = new A3DVECTOR3(0f);
|
||||
private Transform playerTransform;
|
||||
private float EC_SLOPE_Y = 0.5f;
|
||||
int m_iOldWalkMode = Move_Mode.MOVE_STAND; // Copy of work mode
|
||||
|
||||
// ====== Ground cast config ======
|
||||
[Header("Ground Cast")]
|
||||
@@ -3389,7 +3390,7 @@ namespace BrewMonster
|
||||
// m_GndInfo.fGndHei = pWorld.GetTerrainHeight(vPos, &m_GndInfo.vGndNormal);
|
||||
|
||||
// Test whether last pos is in air
|
||||
A3DVECTOR3 vGndPos0, vTestPos0 = m_MoveCtrl.GetLastSevPos() + g_vAxisY * m_aabbServer.Extents.y;
|
||||
Vector3 vGndPos0 = Vector3.zero, vTestPos0 = m_MoveCtrl.GetLastSevPos() + g_vAxisY * m_aabbServer.Extents.y;
|
||||
VertRayTrace(vTestPos0, vGndPos0, m_GndInfo.vGndNormal);
|
||||
|
||||
m_GndInfo.fGndHei = vGndPos0.y;
|
||||
@@ -3405,46 +3406,46 @@ namespace BrewMonster
|
||||
A3DVECTOR3 vGndPos, vTestPos = vPos + g_vAxisY * m_aabbServer.Extents.y;
|
||||
VertRayTrace(vTestPos, vGndPos, m_GndInfo.vGndNormal);
|
||||
m_GndInfo.fGndHei = vGndPos.y;
|
||||
m_GndInfo.fWaterHei = pWorld.GetWaterHeight(vTestPos);
|
||||
//m_GndInfo.fWaterHei = pWorld.GetWaterHeight(vTestPos);
|
||||
|
||||
//@note : use the aabb trace. By Kuiwu[12/10/2005]
|
||||
VertAABBTrace(vTestPos, m_aabbServer.Extents, vAABBGnd, m_GndInfo.vGndNormal);
|
||||
vAABBGnd.y -= m_aabbServer.Extents.y;
|
||||
|
||||
//@note : By Kuiwu[12/10/2005]
|
||||
int iNewEnv = MOVEENV_GROUND;
|
||||
if (CheckWaterMoveEnv(vPos, m_GndInfo.fWaterHei, vAABBGnd.y))
|
||||
iNewEnv = MOVEENV_WATER;
|
||||
int iNewEnv = Move_environment.MOVEENV_GROUND;
|
||||
//if (CheckWaterMoveEnv(vPos, m_GndInfo.fWaterHei, vAABBGnd.y))
|
||||
// iNewEnv = Move_environment.MOVEENV_WATER;
|
||||
|
||||
// ·ÉÌì¹ÒÎÊÌâ
|
||||
|
||||
if (iNewEnv == MOVEENV_GROUND && GetPos().y - vAABBGnd.y < 0.2f && bIsInAir && GetPos() != m_MoveCtrl.GetLastSevPos())
|
||||
{
|
||||
m_MoveCtrl.SendMoveCmd(GetPos(), 2, g_vAxisY, m_CDRInfo.vAbsVelocity, m_iMoveMode, true);
|
||||
// BubbleText(BUBBLE_LEVELUP, 0);
|
||||
}
|
||||
//if (iNewEnv == Move_environment.MOVEENV_GROUND && GetPos().y - vAABBGnd.y < 0.2f && bIsInAir && GetPos() != m_MoveCtrl.GetLastSevPos())
|
||||
//{
|
||||
// m_MoveCtrl.SendMoveCmd(GetPos(), 2, g_vAxisY, m_CDRInfo.vAbsVelocity, m_iMoveMode, true);
|
||||
// // BubbleText(BUBBLE_LEVELUP, 0);
|
||||
//}
|
||||
|
||||
if (iNewEnv == MOVEENV_GROUND)
|
||||
if (iNewEnv == Move_environment.MOVEENV_GROUND)
|
||||
{
|
||||
m_GndInfo.bOnGround = true;
|
||||
|
||||
// if (vPos.y > m_GndInfo.fGndHei + 0.2f)
|
||||
if (m_CDRInfo.vTPNormal.IsZero())
|
||||
if (m_CDRInfo.vTPNormal == Vector3.zero)
|
||||
{
|
||||
if (m_iMoveMode != MOVE_FREEFALL)
|
||||
m_iMoveMode = MOVE_FREEFALL;
|
||||
if (m_iMoveMode != (int)MoveMode.MOVE_FREEFALL)
|
||||
m_iMoveMode = (int)MoveMode.MOVE_FREEFALL;
|
||||
|
||||
m_GndInfo.bOnGround = false;
|
||||
if (IsJumping() && m_CDRInfo.vAbsVelocity.y < 0.0f && vPos.y - vAABBGnd.y < 0.6f)
|
||||
{
|
||||
PlayAction(ACT_JUMP_LAND, false);
|
||||
PlayAction((int)PLAYER_ACTION_TYPE.ACT_JUMP_LAND, false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IsJumping() && m_CDRInfo.vAbsVelocity.y < 0.0f && vPos.y - vAABBGnd.y < 0.6f)
|
||||
{
|
||||
PlayAction(ACT_JUMP_LAND, false);
|
||||
PlayAction((int)PLAYER_ACTION_TYPE.ACT_JUMP_LAND, false);
|
||||
ResetJump();
|
||||
}
|
||||
|
||||
@@ -3453,42 +3454,42 @@ namespace BrewMonster
|
||||
{
|
||||
if (!m_MoveCtrl.GetSlideLock())
|
||||
{
|
||||
if (m_iMoveMode != MOVE_SLIDE)
|
||||
if (m_iMoveMode != (int)MoveMode.MOVE_SLIDE)
|
||||
{
|
||||
m_iOldWalkMode = m_iMoveMode;
|
||||
m_iMoveMode = MOVE_SLIDE;
|
||||
m_iMoveMode = (int)MoveMode.MOVE_SLIDE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_MoveCtrl.SetSlideLock(false);
|
||||
m_iMoveMode = MOVE_STAND;
|
||||
m_iMoveMode = (int)MoveMode.MOVE_STAND;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_MoveCtrl.SetSlideLock(false);
|
||||
if (m_iMoveMode == MOVE_FREEFALL)
|
||||
if (m_iMoveMode == (int)MoveMode.MOVE_FREEFALL)
|
||||
{
|
||||
m_iMoveMode = MOVE_STAND;
|
||||
m_iMoveMode = (int)MoveMode.MOVE_STAND;
|
||||
}
|
||||
else if (m_iMoveMode == MOVE_SLIDE)
|
||||
else if (m_iMoveMode == (int)MoveMode.MOVE_SLIDE)
|
||||
m_iMoveMode = m_iOldWalkMode;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (iNewEnv == MOVEENV_WATER)
|
||||
{
|
||||
m_CDRInfo.fYVel = 0.0f;
|
||||
//else if (iNewEnv == MOVEENV_WATER)
|
||||
//{
|
||||
// m_CDRInfo.fYVel = 0.0f;
|
||||
|
||||
if (m_iMoveMode == MOVE_SLIDE)
|
||||
{
|
||||
if (m_pWorkMan.IsMoving())
|
||||
m_iMoveMode = MOVE_MOVE;
|
||||
else
|
||||
m_iMoveMode = MOVE_STAND;
|
||||
}
|
||||
}
|
||||
// if (m_iMoveMode == MOVE_SLIDE)
|
||||
// {
|
||||
// if (m_pWorkMan.IsMoving())
|
||||
// m_iMoveMode = MOVE_MOVE;
|
||||
// else
|
||||
// m_iMoveMode = MOVE_STAND;
|
||||
// }
|
||||
//}
|
||||
|
||||
m_iMoveEnv = iNewEnv;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user