调整创建角色时位置设置时许

main
刘涛 2023-10-25 14:09:09 +08:00
parent bf449b73e8
commit 481236de65
4 changed files with 20 additions and 18 deletions

View File

@ -103,12 +103,17 @@ namespace Gameplay.Character
private async UniTask<Character> _Create(uint id,
CharacterConfigData configData,
int teamId)
int teamId, Vector3 pos, float yaw)
{
DebugUtil.Log("Create Character id: {0} troopId: {1}",id, teamId);
var character = new Character(id, configData, teamId);
// TODO: 这里先不等待异步,后续在想具体哪种更好
_ = character.LoadAsync();
character.transData.disableEvent = true;
character.transData.pos = pos;
character.transData.yaw = yaw;
character.transData.disableEvent = false;
character.Node.GameObject.transform.position = pos;
character.Node.GameObject.transform.localRotation = Quaternion.Euler(0, yaw, 0);
await character.LoadAsync();
await _AddCharacter(character);
return character;
}
@ -154,7 +159,9 @@ namespace Gameplay.Character
public async UniTask<Character> CreateNPC(int npcId,
int teamId,
int level)
int level,
Vector3 pos,
float yaw)
{
var uId = GUIDManager.GenGuid();
var monsterConfig = TableManager.Instance.Tables.Monster.Get(npcId);
@ -202,11 +209,11 @@ namespace Gameplay.Character
configData.eyesColor = monsterTConfig.EmojiEyesColor;
return await _Create(uId, configData, teamId);
return await _Create(uId, configData, teamId, pos, yaw);
}
public async UniTask<Character> CreateCharacter(CharacterDataInfo characterInfo,
int teamId)
int teamId, Vector3 pos, float yaw)
{
var cId = characterInfo.Cfg.RoleID;
var characterData = TableManager.Instance.Tables.CharacterAttri.Get(cId);
@ -279,7 +286,7 @@ namespace Gameplay.Character
configData.eyeBrowsType = characterData.EmojiEyeBowsType;
configData.eyesColor = characterData.EmojiEyesColor;
return await _Create(characterInfo.ID, configData, teamId);
return await _Create(characterInfo.ID, configData, teamId, pos, yaw);
}
private void _AddToTroop(Character c)

View File

@ -80,10 +80,9 @@ namespace Gameplay.Level
// TODO: LT:临时处理,后续需要根据配置来
var teamId = ETroopsId.Enemy1;
var character = await _characterManager.CreateNPC(npcInfo.id, teamId, npcInfo.level);
var pos = _map.BlockPosition2WorldPosition(npcInfo.position);
character.transData.yaw =
LevelUtils.SetCharaterToward(npcInfo.npcToward);
var yaw = LevelUtils.SetCharaterToward(npcInfo.npcToward);
var character = await _characterManager.CreateNPC(npcInfo.id, teamId, npcInfo.level, pos, yaw);
character.transData.pos = pos;
character.Node.SetPosition(pos);
character.runtimeData.characterLevelData = new CharacterLevelData()
@ -269,4 +268,4 @@ namespace Gameplay.Level
return StringManager.Instance.GetLocalizeTextByKey(string.Format(DescKey, _id));
}
}
}
}

View File

@ -304,7 +304,7 @@ namespace Gameplay.Level
UITipsManager.ShowTips("上阵人数达到上限!");
return;
}
// 不是准备区域
if (!_level.IsPreparingRegion(map.TGSCellIndex2BlockPosition(cellIndex)))
{
@ -366,13 +366,9 @@ namespace Gameplay.Level
return;
}
var character = await _level.CharacterManager.CreateCharacter(characterInfo, ETroopsId.Self);
var character = await _level.CharacterManager.CreateCharacter(characterInfo, ETroopsId.Self, position, yaw);
if (character != null)
{
character.transData.disableEvent = true;
character.transData.pos = position;
character.transData.yaw = yaw;
character.transData.disableEvent = false;
character.PrepareReady();
await character.EnterBattle();
}

View File

@ -330,7 +330,7 @@ namespace Gameplay.Level
return;
}
var character = await _level.CharacterManager.CreateCharacter(characterInfo, ETroopsId.Self);
var character = await _level.CharacterManager.CreateCharacter(characterInfo, ETroopsId.Self, position, yaw);
if (character != null)
{
character.transData.pos = position;