protected override void Execute(List <GameEntity> entities) { foreach (var agent in entities) { AgentPosComponent pos = agent.agentPos; LastAgentPosComponent lastPos = agent.lastAgentPos; float dx = pos.x - lastPos.x; float dy = pos.y - lastPos.y; float dz = pos.z - lastPos.z; agent.ReplaceAgentRot(dx, dy, dz); agent.view.skin.transform.rotation = UnityEngine.Quaternion.LookRotation(new UnityEngine.Vector3(dx, dy, dz)); } }
protected override void Execute(List <GameEntity> entities) { foreach (var agent in entities) { if (agent.view.skin == null) { UnityEngine.GameObject prefab = UnityEngine.Resources.Load("NPC") as UnityEngine.GameObject; if (null != prefab) { agent.view.skin = UnityEngine.GameObject.Instantiate(prefab); } } AgentPosComponent agentPos = agent.agentPos; agent.view.skin.transform.position = new UnityEngine.Vector3(agentPos.x, agentPos.y, agentPos.z); } }
protected override void Execute(List <GameEntity> entities) { foreach (var agent in entities) { if (agent.hasAgentPos) { MoveTargetComponent endPos = agent.moveTarget; AgentPosComponent curPos = agent.agentPos; float dx = endPos.dx - curPos.x; float dy = endPos.dy - curPos.y; float dz = endPos.dz - curPos.z; float speed = 0.05f; float dis = (float)System.Math.Sqrt(dx * dx + dy * dy + dz * dz); if (dis <= speed) { agent.ReplaceLastAgentPos(endPos.dx, endPos.dy, endPos.dz); agent.ReplaceAgentPos(endPos.dx, endPos.dy, endPos.dz); agent.RemoveMove(); agent.RemoveMoveTarget(); continue; } if (dis != 0) { dx /= dis; dy /= dis; dz /= dis; } float sx = curPos.x + dx * speed; float sy = curPos.y + dy * speed; float sz = curPos.z + dz * speed; agent.ReplaceLastAgentPos(curPos.x, curPos.y, curPos.z); agent.ReplaceAgentPos(sx, sy, sz); } } }