In state-of-the-art games, characters can move in a goal-directed manner so that they can move to the goal position without colliding obstacles. Many path-finding methods have been proposed and implemented for these characters and most of them use the A* search algorithm. When the map is represented with a regular grid of squares or a navigation mesh, it often takes a long time for the A* to search the state space because the number of cells used in the grid or the mesh increases for higher resolution. Moreover the A* search on the grid often causes a zigzag effect, which is not optimal and realistic. In this paper we propose to use visibility graphs to improve the search time by reducing the search space and to find the optimal path. We also propose a method of taking into account the size of moving characters in the phase of planning to prevent them from colliding with obstacles as they move. Simulation results show that the proposed method performs better than the grid-based A* algorithm in terms of the search time and space and that the resulting paths are more realistic.