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);
         }
     }
 }
Beispiel #2
0
    // 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;
    }
Beispiel #3
0
    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;
            }
        }
    }