public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { //we are reicieving data if (stream.isReading) { //receive the next data from the stream and set it to the truLoc varible if (!pv.isMine) //do we own this photonView????? { this.trueLoc = (Vector3)stream.ReceiveNext(); //the stream send data types of "object" we must typecast the data into a Vector3 format this.trueRot = (Quaternion)stream.ReceiveNext(); DatabaseCharacter myChar = GetComponent <DatabaseCharacter>(); myChar.characterState = (int)stream.ReceiveNext(); myChar.myAnimator.SetInteger("animationState", myChar.characterState); } } //we need to send our data else { //send our posistion in the data stream if (pv.isMine) { stream.SendNext(transform.position); stream.SendNext(transform.rotation); DatabaseCharacter myChar = GetComponent <DatabaseCharacter>(); stream.SendNext(myChar.characterState); } } }
// Update is called once per frame void Update() { if (character != null) { //yRotation += Input.GetAxis ("Mouse X") * lookSensitivity; //xRotation -= Input.GetAxis ("Mouse Y") * lookSensitivity; //xRotation = Mathf.Clamp (xRotation, -lookUpAndDownLimit, lookUpAndDownLimit); //yRotation = Mathf.Clamp (yRotation, -lookLeftAndRightLimit, lookLeftAndRightLimit); //currentXRotation = Mathf.SmoothDamp (currentXRotation, xRotation, ref xRotationV, lookSmoothDamp); //currentYRotation = Mathf.SmoothDamp (currentYRotation, yRotation, ref yRotationV, lookSmoothDamp); //character.transform.rotation = Quaternion.Euler (currentXRotation, 0, 0); character.transform.Translate(Input.GetAxis("Horizontal") * rotationSpeed * Time.deltaTime, 0, Input.GetAxis("Vertical") * speed * Time.deltaTime); character.transform.Rotate(Input.GetAxis("Mouse Y") * rotationSpeed * Time.deltaTime, Input.GetAxis("Mouse X") * rotationSpeed * Time.deltaTime, 0); } DatabaseCharacter DBchar = (DatabaseCharacter)character.GetComponent(typeof(DatabaseCharacter)); mainCamera.parent = DBchar.head.transform; mainCamera.position = DBchar.head.position; }
private void Start() { _battleTeams = (new SaveBattleSystem()).BattleTeams; _characterViews = new Dictionary <BattleCharacter, FightCharacterView>(); List <BattleCharacterPlacement> teamA = new List <BattleCharacterPlacement>(); List <BattleCharacterPlacement> teamB = new List <BattleCharacterPlacement>(); List <BattleCharacter> queue = new List <BattleCharacter>(); Dictionary <BattleCharacter, int> queueTeamA = new Dictionary <BattleCharacter, int>(); Dictionary <BattleCharacter, int> queueTeamB = new Dictionary <BattleCharacter, int>(); foreach (var member in _battleTeams.FightTeamA.Characters) { DatabaseCharacter databaseCharacter = _database.GetDatabaseCharacter(member.Id); BattleCharacter character = new BattleCharacter(databaseCharacter.BattleCharacter, databaseCharacter.Characteristics, null); PlacementPosition position = new PlacementPosition(member.LinePosition, member.ColumnPosition); teamA.Add(new BattleCharacterPlacement(character, position)); queueTeamA.Add(character, member.PlaceInQueue); } foreach (var member in _battleTeams.FightTeamB.Characters) { DatabaseCharacter databaseCharacter = _database.GetDatabaseCharacter(member.Id); BattleCharacter character = new BattleCharacter(databaseCharacter.BattleCharacter, databaseCharacter.Characteristics, null); PlacementPosition position = new PlacementPosition(member.LinePosition, member.ColumnPosition); teamB.Add(new BattleCharacterPlacement(character, position)); queueTeamB.Add(character, member.PlaceInQueue); } _battlePlacement = new BattlePlacement(teamA, teamB); foreach (var member in _battlePlacement.Search.AllTeam()) { member.SetBattlePlacement(_battlePlacement); } foreach (var member in teamA) { FightSpawnPoint spawnPoint = _teamASpownPoints[member.Position.Line].points[member.Position.Column]; FightCharacterView fightCharacter = Instantiate(_prefabCharacter, spawnPoint.transform); _characterViews.Add(member.Character, fightCharacter); } foreach (var member in teamB) { FightSpawnPoint spawnPoint = _teamBSpownPoints[member.Position.Line].points[member.Position.Column]; FightCharacterView fightCharacter = Instantiate(_prefabCharacter, spawnPoint.transform); _characterViews.Add(member.Character, fightCharacter); } for (int i = 0; queueTeamA.Count > 0 || queueTeamB.Count > 0; i++) { if (i % 2 == 0) { if (queueTeamA.Count > 0) { BattleCharacter battleCharacter = null; int j = int.MaxValue; foreach (var key in queueTeamA.Keys) { if (queueTeamA[key] < j) { battleCharacter = key; j = queueTeamA[key]; } } if (battleCharacter != null) { queue.Add(battleCharacter); queueTeamA.Remove(battleCharacter); } } } else { if (queueTeamB.Count > 0) { BattleCharacter battleCharacter = null; int j = int.MaxValue; foreach (var key in queueTeamB.Keys) { if (queueTeamB[key] < j) { battleCharacter = key; j = queueTeamB[key]; } } if (battleCharacter != null) { queue.Add(battleCharacter); queueTeamB.Remove(battleCharacter); } } } } _timer = 0; _fightControler = GetComponent <FightControler>(); _allAction = _fightControler.Fight(_battlePlacement, queue); for (_countAction = 0; _countAction < _allAction.Count; _countAction++) { if (_allAction[_countAction].Act == CharacterActionEvent.Action.System) { if (_allAction[_countAction].ActSystem.SystemEnum == CharacterActionEvent.ActionSystem.StartFight) { return; } } ActionHandler(_allAction[_countAction]); } }
void FixedUpdate() { // Checa se esta no inventario para desativar a movimentaçao if (Input.GetButtonDown("Inventory")) { isOnInventory = !isOnInventory; } //Checa se existe char if (character != null && !isOnInventory) { // Criaçao do personagem e ajuste da camera DatabaseCharacter DBchar = (DatabaseCharacter)character.GetComponent(typeof(DatabaseCharacter)); DBchar.isMine = true; mainCamera.parent = DBchar.head.transform; mainCamera.position = new Vector3(DBchar.head.position.x, DBchar.head.position.y + 0.3f, DBchar.head.position.z); health = DBchar.health; stamina = DBchar.stamina; // Atualiza variaveis de apoio down = DBchar.transform.TransformDirection(Vector3.down); front = DBchar.transform.TransformDirection(Vector3.forward); auxTime += Time.deltaTime; Debug.Log(MouseOverObject(DBchar.transform.position, front, 5f)); // Movimentaçao de X e Y simultaneos if (axes == RotationAxes.MouseXAndY) { float rotationX = DBchar.transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX; rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationY = Mathf.Clamp(rotationY, minimumY, maximumY); DBchar.head.transform.localEulerAngles = new Vector3(rotationY, 0, 0); DBchar.transform.localEulerAngles = new Vector3(0, rotationX, 0); // Movimentaçao de X } else if (axes == RotationAxes.MouseX) { DBchar.transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0); // Movimentaçao de Y } else { rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationY = Mathf.Clamp(rotationY, minimumY, maximumY); DBchar.head.transform.localEulerAngles = new Vector3(rotationY, DBchar.head.transform.localEulerAngles.y, 0); } // Antiga Movimentaçao do personagem //if (Input.GetKey (KeyCode.LeftShift)) //DBchar.transform.Translate (Input.GetAxis ("Horizontal") * (speed * runMultiplier) * Time.deltaTime, 0, Input.GetAxis ("Vertical") * (speed * runMultiplier) * Time.deltaTime); //DBchar.rigidbody.AddForce (Input.GetAxis ("Horizontal")*1000*Time.deltaTime, 0,Input.GetAxis ("Vertical")*1000*Time.deltaTime); //else DBchar.transform.Translate (Input.GetAxis ("Horizontal") * speed * Time.deltaTime, 0, Input.GetAxis ("Vertical") * speed * Time.deltaTime); // Nova Movimentaçao do personagem Vector3 targetVelocity = new Vector3(Input.GetAxis("Horizontal") * Time.deltaTime, 0, Input.GetAxis("Vertical") * Time.deltaTime); targetVelocity = DBchar.transform.TransformDirection(targetVelocity); if (Input.GetKey(KeyCode.LeftShift) && DBchar.stamina > 0) { targetVelocity *= speed * runMultiplier; DBchar.stamina -= 0.2f; } else { targetVelocity *= speed; } Vector3 velocity = DBchar.rigidbody.velocity; Vector3 velocityChange = (targetVelocity - velocity); velocityChange.x = Mathf.Clamp(velocityChange.x, -maxVelocityChange, maxVelocityChange); velocityChange.z = Mathf.Clamp(velocityChange.z, -maxVelocityChange, maxVelocityChange); velocityChange.y = 0; DBchar.rigidbody.AddForce(velocityChange, ForceMode.VelocityChange); // Pulo do Personagem if (Input.GetKeyDown(KeyCode.Space) && DBchar.isGrounded(DBchar.transform.position, down, 2.4f) && DBchar.stamina > 9) { DBchar.rigidbody.AddForce(0, jumpForce, 0); DBchar.stamina = DBchar.stamina - 10; } // Stamina recovery if (DBchar.stamina <= 100) { DBchar.stamina += 0.02f; } // Chama o soco if (Input.GetKeyDown(KeyCode.Mouse0) && DBchar.isMine && auxTime > 0.8) { auxTime = 0; DBchar.characterState = 1; DBchar.myAnimator.SetInteger("animationState", DBchar.characterState); DBchar.havePlayer(DBchar.transform.position, front, 10f); } else { DBchar.characterState = 0; DBchar.myAnimator.SetInteger("animationState", DBchar.characterState); } // Picka e arremessa objetos if (Input.GetButtonDown("Grab")) { if (grabbedObject == null) { GrabObject(MouseOverObject(DBchar.transform.position, front, 5f)); } else { DropObject(); } } // Se objeto estiver na mao if (grabbedObject != null) { Vector3 newPosition = DBchar.transform.position + mainCamera.transform.forward * grabbedObjectSize; grabbedObject.transform.position = newPosition; } } }