Exemplo n.º 1
0
        private void Start()
        {
            boardManager = GameObject.Find("ChessManager").GetComponent <BoardManager>();

            if (pose == null)
            {
                pose = this.GetComponent <SteamVR_Behaviour_Pose>();
            }
            if (pose == null)
            {
                Debug.LogError("No SteamVR_Behaviour_Pose component found on this object");
            }

            if (interactWithUI == null)
            {
                Debug.LogError("No ui interaction action has been set on this component.");
            }

            current_piece        = GameObject.Find("king_white");
            current_piece_script = current_piece.GetComponent <PieceBehavior>();

            target_piece = current_piece;
            player       = GameObject.Find("Player");
            current_piece.GetComponent <MeshRenderer>().enabled = false;
            stateMachine = player.GetComponent <StateMachine>();

            holder = new GameObject();
            holder.transform.parent        = this.transform;
            holder.transform.localPosition = Vector3.zero;
            holder.transform.localRotation = Quaternion.identity;

            pointer = GameObject.CreatePrimitive(PrimitiveType.Cube);
            pointer.transform.parent        = holder.transform;
            pointer.transform.localScale    = new Vector3(thickness, thickness, 100f);
            pointer.transform.localPosition = new Vector3(0f, 0f, 50f);
            pointer.transform.localRotation = Quaternion.identity;
            BoxCollider collider = pointer.GetComponent <BoxCollider>();

            if (addRigidBody)
            {
                if (collider)
                {
                    collider.isTrigger = true;
                }
                Rigidbody rigidBody = pointer.AddComponent <Rigidbody>();
                rigidBody.isKinematic = true;
            }
            else
            {
                if (collider)
                {
                    Object.Destroy(collider);
                }
            }
            Material newMaterial = new Material(Shader.Find("Unlit/Color"));

            newMaterial.SetColor("_Color", color);
            pointer.GetComponent <MeshRenderer>().material = newMaterial;
        }
Exemplo n.º 2
0
    void Match()
    {
        // absorb behavior
        Debug.Log("match");
        pieceBehavior = matchedPiece.GetComponent <PieceBehavior>();
        pieceBehavior.SetIsMatch(true);
        matchedPiece.transform.LookAt(transform.position);
        StartCoroutine(Absorb());

        // sound effect
        if (!audioSource.isPlaying)
        {
            audioSource.PlayOneShot(matchSound);
        }
    }
Exemplo n.º 3
0
        public void PerspectiveHandler()
        {
            // TO DO: RECONSIDER THIS STATE
            if (stateMachine.STATE == START_GAME)
            {
                current_piece_script = current_piece.GetComponent <PieceBehavior>();
                boardManager.makeMove(current_piece_script.x, current_piece_script.y);
                DrawTile(1);
                stateMachine.STATE = PLAYER_ONE_SELECT;
            }
            if (stateMachine.STATE == PLAYER_ONE_SELECT)
            {
                player.transform.position = current_piece.transform.position + Vector3.up;
            }
            if (stateMachine.STATE == PLAYER_ONE_TRANSPERSPECTIVE)
            {
                if (player.transform.position != target_piece.transform.position + Vector3.up)
                {
                    //player.transform.position = Vector3.MoveTowards(player.transform.position, target_piece.transform.position + Vector3.up, transperspective_speed * Time.deltaTime);
                    player.transform.position = target_piece.transform.position + Vector3.up;
                }
                else
                {
                    //Debug.Log("Transperspective complete!");
                    stateMachine.STATE = PLAYER_ONE_SELECT;
                    DrawTile(0);
                    current_piece.GetComponent <MeshRenderer>().enabled = true;
                    current_piece.GetComponent <Collider>().enabled     = true;
                    current_piece = target_piece;

                    // highlight possible moves
                    current_piece_script = current_piece.GetComponent <PieceBehavior>();
                    boardManager.makeMove(current_piece_script.x, current_piece_script.y);
                    DrawTile(1);
                }
            }
            if (stateMachine.STATE == PLAYER_ONE_MOVE)
            {
            }
            if (stateMachine.STATE == PLAYER_ONE_TRANSPERSPECTIVE_1)
            {
                Vector3 target_pos_1 = new Vector3(target_tile.transform.position.x,
                                                   player.transform.position.y,
                                                   target_tile.transform.position.z);
                Vector3 target_pos_2 = new Vector3(target_tile.transform.position.x,
                                                   current_piece.transform.position.y,
                                                   target_tile.transform.position.z);
                current_piece.GetComponent <PieceBehavior>().original_pos = target_pos_2;
                current_piece.GetComponent <PieceBehavior>().float_pos    = current_piece.GetComponent <PieceBehavior>().original_pos + Vector3.up / 5;
                if (player.transform.position != target_pos_1 || current_piece.transform.position != target_pos_2)
                {
                    player.transform.position = Vector3.MoveTowards(player.transform.position,
                                                                    target_pos_1,
                                                                    transperspective_speed * Time.deltaTime);
                    current_piece.transform.position = Vector3.MoveTowards(current_piece.transform.position,
                                                                           target_pos_2,
                                                                           transperspective_speed * Time.deltaTime);
                }
                else
                {
                    //stateMachine.STATE = PLAYER_ONE_SELECT;
                    stateMachine.STATE = OPPONENT_MOVES;
                    boardManager.makeMove(current_piece_script.x, current_piece_script.y);
                    enemy_move = boardManager.decideAndMoveEnemyPiece();
                    DrawTile(0);
                }
            }
            if (stateMachine.STATE == OPPONENT_MOVES)
            {
                enemypiece        = stateMachine.board[enemy_move[0], enemy_move[1]];
                enemy_target_tile = GameObject.Find(GetTileName(enemy_move[2], enemy_move[3]));

                enemy_target_pos = new Vector3(enemy_target_tile.transform.position.x,
                                               enemypiece.transform.position.y,
                                               enemy_target_tile.transform.position.z);
                if (enemypiece.transform.position != enemy_target_pos)
                {
                    enemypiece.transform.position = Vector3.MoveTowards(enemypiece.transform.position, enemy_target_pos, transperspective_speed * Time.deltaTime);
                }
                else
                {
                    //Debug.Log("Enemy move completes!");
                    stateMachine.STATE = PLAYER_ONE_SELECT;
                    update_board(enemy_move[0], enemy_move[1], enemy_move[2], enemy_move[3]);
                    boardManager.resetTiles();
                    current_piece_script = current_piece.GetComponent <PieceBehavior>();
                    boardManager.makeMove(current_piece_script.x, current_piece_script.y);
                    DrawTile(1);
                }
            }
        }