fix: update logic move and stop elesplayer.
This commit is contained in:
Binary file not shown.
@@ -2,6 +2,7 @@
|
||||
using BrewMonster.Network;
|
||||
using CSNetwork;
|
||||
using CSNetwork.GPDataType;
|
||||
using CSNetwork.Protocols.RPCData;
|
||||
using PerfectWorld.Scripts.Player;
|
||||
using System;
|
||||
using System.Collections;
|
||||
@@ -76,7 +77,8 @@ namespace PerfectWorld.Scripts.Managers
|
||||
if (cid != iHostID)
|
||||
{
|
||||
info_player_1 info_Player_1 = GPDataTypeHelper.FromBytes<info_player_1>((byte[])Msg.dwParam1);
|
||||
ElsePlayerEnter(info_Player_1, commandID);
|
||||
RoleInfo roleInfo = (RoleInfo)Msg.dwParam4;
|
||||
ElsePlayerEnter(info_Player_1, commandID, roleInfo);
|
||||
GameController.Instance.Log("ElsePlayer has join");
|
||||
}
|
||||
break;
|
||||
@@ -131,7 +133,7 @@ namespace PerfectWorld.Scripts.Managers
|
||||
return true;
|
||||
}
|
||||
|
||||
public EC_ElsePlayer ElsePlayerEnter(info_player_1 info, int iCmd)
|
||||
public EC_ElsePlayer ElsePlayerEnter(info_player_1 info, int iCmd, RoleInfo roleInfo)
|
||||
{
|
||||
// If this player's id is in unknown table, remove it because this player
|
||||
// won't be unknown anymore
|
||||
@@ -152,12 +154,12 @@ namespace PerfectWorld.Scripts.Managers
|
||||
{
|
||||
// This player has existed in player table, call special initial function
|
||||
// TODO: fix after pPlayer init
|
||||
//pPlayer.Init(Info, iAppearFlag, true);
|
||||
pPlayer.Init(roleInfo, info);
|
||||
return pPlayer;
|
||||
}
|
||||
|
||||
// Create a new player
|
||||
if (!(pPlayer = CreateElsePlayer(info, iAppearFlag)))
|
||||
if (!(pPlayer = CreateElsePlayer(roleInfo, info, iAppearFlag)))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -175,12 +177,13 @@ namespace PerfectWorld.Scripts.Managers
|
||||
return pPlayer;
|
||||
}
|
||||
|
||||
private EC_ElsePlayer CreateElsePlayer(info_player_1 info, int iAppearFlag)
|
||||
private EC_ElsePlayer CreateElsePlayer(RoleInfo roleInfo, info_player_1 info, int iAppearFlag)
|
||||
{
|
||||
var ob = GameController.Instance.InitCharacter(info);
|
||||
EC_ElsePlayer elsePlayer = ob.AddComponent<EC_ElsePlayer>();
|
||||
elsePlayer.GetComponent<CharacterCtrl>().enabled = false;
|
||||
//init
|
||||
elsePlayer.Init(roleInfo, info);
|
||||
return elsePlayer;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using BrewMonster;
|
||||
using CSNetwork;
|
||||
using CSNetwork.GPDataType;
|
||||
using CSNetwork.Protocols.RPCData;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -23,6 +24,111 @@ namespace PerfectWorld.Scripts.Player
|
||||
OtherPlayer_Move_Info m_cdr = new OtherPlayer_Move_Info();
|
||||
// 和服务器提供的 aabb,无法影响朝向 = The AABB provided by the server cannot affect the facing/orientation
|
||||
A3DAABB m_aabbServer = new A3DAABB();
|
||||
A3DAABB m_aabb = new A3DAABB(); // Player's aabb£¬ÓÃÓÚÏÔʾµÄaabb£¬ÊÜËõ·ÅÓ°Ïì
|
||||
string m_strName; // Player name
|
||||
int m_iProfession; // Profession
|
||||
int m_iGender; // Gender
|
||||
float m_fScaleBySkill = 1f;
|
||||
MOVECONST m_MoveConst; // Const used when moving control
|
||||
|
||||
public MOVECONST[] aMoveConsts = new MOVECONST[PROFESSION.NUM_PROFESSION * GENDER.NUM_GENDER]
|
||||
{
|
||||
// ÎäÏÀ
|
||||
// fStepHei fMinAirHei fMinWaterHei fShoreDepth fWaterSurf
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f),
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f),
|
||||
// ·¨Ê¦
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f),
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f),
|
||||
// Î×ʦ
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f),
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f),
|
||||
// Ñý¾«
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f),
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f),
|
||||
// ÑýÊÞ
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.8f, 0.7f),
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f),
|
||||
// ´Ì¿Í
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f),
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f),
|
||||
// Óðâ
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f),
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f),
|
||||
// ÓðÁé
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f),
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f),
|
||||
// ½£Áé
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f),
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f),
|
||||
// ÷ÈÁé
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f),
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f),
|
||||
// Ò¹Ó°
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f),
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f),
|
||||
// ÔÂÏÉ
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.6f, 0.6f),
|
||||
new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f),
|
||||
};
|
||||
|
||||
public A3DVECTOR3[] aExts = new A3DVECTOR3[PROFESSION.NUM_PROFESSION * GENDER.NUM_GENDER]
|
||||
{
|
||||
new A3DVECTOR3(0.4f, 0.9f, 0.4f), // ÎäÏÀ
|
||||
new A3DVECTOR3(0.3f, 0.85f, 0.3f),
|
||||
new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ·¨Ê¦
|
||||
new A3DVECTOR3(0.3f, 0.85f, 0.3f),
|
||||
new A3DVECTOR3(0.3f, 0.9f, 0.3f), // Î×ʦ
|
||||
new A3DVECTOR3(0.3f, 0.85f, 0.3f),
|
||||
new A3DVECTOR3(0.3f, 0.9f, 0.3f), // Ñý¾«
|
||||
new A3DVECTOR3(0.3f, 0.85f, 0.3f),
|
||||
new A3DVECTOR3(0.5f, 1.05f, 0.5f), // ÑýÊÞ
|
||||
new A3DVECTOR3(0.3f, 0.9f, 0.3f),
|
||||
new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ´Ì¿Í
|
||||
new A3DVECTOR3(0.3f, 0.85f, 0.3f),
|
||||
new A3DVECTOR3(0.3f, 0.9f, 0.3f), // Óðâ
|
||||
new A3DVECTOR3(0.3f, 0.85f, 0.3f),
|
||||
new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ÓðÁé
|
||||
new A3DVECTOR3(0.3f, 0.85f, 0.3f),
|
||||
new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ½£Áé
|
||||
new A3DVECTOR3(0.3f, 0.85f, 0.3f),
|
||||
new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ÷ÈÁé
|
||||
new A3DVECTOR3(0.3f, 0.85f, 0.3f),
|
||||
new A3DVECTOR3(0.3f, 0.9f, 0.3f), // Ò¹Ó°
|
||||
new A3DVECTOR3(0.3f, 0.85f, 0.3f),
|
||||
new A3DVECTOR3(0.3f, 0.9f, 0.3f), // ÔÂÏÉ
|
||||
new A3DVECTOR3(0.3f, 0.85f, 0.3f),
|
||||
};
|
||||
|
||||
public void Init(RoleInfo roleInfo, info_player_1 Info)
|
||||
{
|
||||
m_iProfession = roleInfo.occupation;
|
||||
m_iGender = roleInfo.gender;
|
||||
|
||||
CalcPlayerAABB();
|
||||
|
||||
SetServerPos(Info.pos);
|
||||
SetPos(Info.pos);
|
||||
|
||||
m_cdr.fStepHeight = m_MoveConst.fStepHei;
|
||||
m_cdr.vExts = m_aabbServer.Extents;
|
||||
m_cdr.vVelocity.Clear();
|
||||
|
||||
A3DVECTOR3 vPos = GetPos();
|
||||
m_aabb.Center = vPos + new A3DVECTOR3(0.0f, m_aabb.Extents.y, 0.0f);
|
||||
m_aabb.CompleteMinsMaxs();
|
||||
m_aabbServer.Center = vPos + new A3DVECTOR3(0.0f, m_aabbServer.Extents.y, 0.0f);
|
||||
m_aabbServer.CompleteMinsMaxs();
|
||||
}
|
||||
|
||||
void CalcPlayerAABB()
|
||||
{
|
||||
int iIndex = m_iProfession * GENDER.NUM_GENDER + m_iGender;
|
||||
|
||||
m_aabb.Extents = aExts[iIndex] * m_fScaleBySkill;
|
||||
m_aabbServer.Extents = aExts[iIndex];
|
||||
m_MoveConst = aMoveConsts[iIndex];
|
||||
}
|
||||
|
||||
public void MoveTo(cmd_object_move Cmd)
|
||||
{
|
||||
@@ -56,7 +162,7 @@ namespace PerfectWorld.Scripts.Player
|
||||
|
||||
}
|
||||
|
||||
public bool MovingTo(long dwDeltaTime)
|
||||
public bool MovingTo(float dwDeltaTime)
|
||||
{
|
||||
bool bRet = false;
|
||||
|
||||
@@ -73,13 +179,11 @@ namespace PerfectWorld.Scripts.Player
|
||||
if (Math.Abs(fMoveDelta - 0f) <= float.Epsilon || fMoveDelta >= fDist) //!fMoveDelta <=> (Math.Abs(fMoveDelta - 0f) <= float.Epsilon) Compare with 0
|
||||
{
|
||||
SetPos(m_vServerPos);
|
||||
//.LogError("m_vServerPos 1= " + m_vServerPos);
|
||||
bRet = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetPos(vPos);
|
||||
//Debug.LogError("vPos 1= " + vPos);
|
||||
}
|
||||
}
|
||||
else // Just move on
|
||||
@@ -91,7 +195,6 @@ namespace PerfectWorld.Scripts.Player
|
||||
if (fDist >= MAX_LAGDIST)
|
||||
{
|
||||
SetPos(m_vServerPos);
|
||||
//Debug.LogError("m_vServerPos 2= " + m_vServerPos);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -99,7 +202,6 @@ namespace PerfectWorld.Scripts.Player
|
||||
vDir.Normalize();
|
||||
vPos = MoveStep(vDir, m_fMoveSpeed, fDeltaTime);
|
||||
SetPos(vPos);
|
||||
//Debug.LogError("vPos 2= " + vPos);
|
||||
}
|
||||
|
||||
return bRet;
|
||||
@@ -150,19 +252,21 @@ namespace PerfectWorld.Scripts.Player
|
||||
fSpeed = -fSpeed;
|
||||
}
|
||||
m_cdr.vCenter = m_aabbServer.Center;
|
||||
Debug.LogError("m_aabbServer.Center = " + m_aabbServer.Center.x + "," + m_aabbServer.Center.y + ","+ m_aabbServer.Center.z);
|
||||
//Debug.LogError("m_aabbServer.Center = " + m_aabbServer.Center.x + "," + m_aabbServer.Center.y + ","+ m_aabbServer.Center.z);
|
||||
m_cdr.vVelocity = vRealDir * fSpeed;
|
||||
//Debug.LogError("vVelocity = " + m_cdr.vVelocity.x + "," + m_cdr.vVelocity.y + "," + m_cdr.vVelocity.z);
|
||||
m_cdr.t = fTime;
|
||||
m_cdr.bTestTrnOnly = false;
|
||||
OtherPlayerMove(m_cdr);
|
||||
//OtherPlayerMove(m_cdr);
|
||||
A3DVECTOR3 vDelta = m_cdr.t * m_cdr.vVelocity;
|
||||
m_cdr.vCenter += vDelta;
|
||||
|
||||
m_cdr.vecGroundNormal = g_vAxisY;
|
||||
//if (m_cdr.bTraceGround)
|
||||
// SetGroundNormal(m_cdr.vecGroundNormal);
|
||||
//else
|
||||
// SetGroundNormal(g_vAxisY);
|
||||
Debug.LogError("g_vAxisY = " + g_vAxisY.x + "," + g_vAxisY.y + "," + g_vAxisY.z);
|
||||
Debug.LogError("m_cdr.vExts.y = " + m_cdr.vExts.y);
|
||||
|
||||
return m_cdr.vCenter - g_vAxisY * m_cdr.vExts.y;
|
||||
}
|
||||
|
||||
@@ -222,16 +326,21 @@ namespace PerfectWorld.Scripts.Player
|
||||
|
||||
private void Update()
|
||||
{
|
||||
MovingTo((long)(Time.deltaTime));
|
||||
MovingTo(Time.deltaTime);
|
||||
}
|
||||
|
||||
private void SetPos(A3DVECTOR3 vPos)
|
||||
{
|
||||
Vector3 vector = new Vector3();
|
||||
Vector3 vector = new Vector3();
|
||||
vector.x = vPos.x;
|
||||
vector.y = vPos.y;
|
||||
vector.z = vPos.z;
|
||||
transform.position = vector;
|
||||
|
||||
m_aabb.Center = vPos + new A3DVECTOR3(0.0f, m_aabb.Extents.y, 0.0f);
|
||||
m_aabb.CompleteMinsMaxs();
|
||||
m_aabbServer.Center = vPos + new A3DVECTOR3(0.0f, m_aabbServer.Extents.y, 0.0f);
|
||||
m_aabbServer.CompleteMinsMaxs();
|
||||
}
|
||||
|
||||
private A3DVECTOR3 GetPos()
|
||||
|
||||
Reference in New Issue
Block a user