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; }
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); } }
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); } } }