private void Start() { tm = GameObject.FindGameObjectWithTag("TileManager").GetComponent <Tile_Manager>(); ship_movement = ship_grid.GetComponent <Movement>(); tm.Init_Ship_Systems(); Find_Wheel(); }
protected override void System_Update() { if (!is_ship) { ship_rb.velocity = new Vector2(0.0f, 0.0f); ship_rb.position = new Vector2(0.0f, 0.0f); ship_rb.angularVelocity = 0.0f; ship_rb.rotation = 0.0f; } if (is_ship_control_activated) { is_ship_control_activated = false; Find_Wheel(); is_converting_to_ship = !is_converting_to_ship; if ((is_converting_to_ship) && (!is_ship)) { tm.Init_Ship_Systems(); Find_Wheel(); Tilemap wheel_tilemap = tm.Grab_Layer(system_tiles["Wheel"][0]); ship_movement.Set_Rotation(wheel_tilemap.GetTransformMatrix(wheel_pos).rotation); Debug.Log("Rotation: " + wheel_tilemap.GetTransformMatrix(wheel_pos).rotation); ship_tile_positions.Clear(); Convert_To_Ship(wheel_pos); Copy_Touching_Layers(tilemaps, ship_tilemaps, -1, false); movement.Set_Parent(ship_rb); player_self_movement = false; ship_movement.enabled = !player_self_movement; player_movement.Set_Independant_Movement(player_self_movement); is_converting_to_ship = false; is_ship = true; } else if (is_ship) { Debug.Log(ship_rb.angularVelocity); if (Mathf.Abs(ship_rb.angularVelocity) > 10.0f) { Debug.Log("Ship rotating too fast to dock"); } else if (Mathf.Abs(ship_rb.velocity.magnitude) > 5.0f) { Debug.Log("Ship moving too fast to dock"); } else { Rotation_Snap(); is_snap_in_progress = true; ship_default_angular_drag = ship_rb.angularDrag; } } } if (is_snap_in_progress) { if (Rotation_Snap()) { ship_rb.angularDrag = ship_default_angular_drag; is_snap_in_progress = false; ship_tile_positions.Clear(); Convert_To_World(wheel_pos); Copy_Touching_Layers(ship_tilemaps, tilemaps, -1, true); movement.Set_Parent(null); ship_movement.enabled = false; player_movement.Set_Independant_Movement(true); ship_rb.velocity = new Vector2(0.0f, 0.0f); ship_rb.position = new Vector2(0.0f, 0.0f); ship_rb.angularVelocity = 0.0f; ship_rb.rotation = 0.0f; ship_rb.useAutoMass = true; is_converting_to_ship = false; is_ship = false; } } }