Patent Publication Number: US-9904357-B2

Title: Launching virtual objects using a rail device

Description:
BACKGROUND 
     Computer graphics technology has come a long way since video games were first developed. Relatively inexpensive 3D graphics engines now provide nearly photo-realistic interactive game play on hand-held video game, home video game and personal computer hardware platforms costing only a few hundred dollars. These video game systems typically include a hand-held controller, game controller, or, in the case of a hand-held video game platform, an integrated controller. A user interacts with the controller to send commands or other instructions to the video game system to control a video game or other simulation. For example, the controller may include a joystick and buttons operated by the user. 
     While video games allow the user to interact directly with the video game system, such interactions primarily influence the graphical depiction shown on the video game device (or on a connected display), and rarely influence any other objects outside of the virtual world. That is, a user may specify an input to the video game system, indicating that the user&#39;s avatar should perform a jump action, and in response the video game system displays the user&#39;s avatar jumping. However, such interactions are typically limited to the virtual world, and any interactions outside the virtual world are limited (e.g., a hand-held gaming device could vibrate when certain actions occur). 
     SUMMARY 
     One embodiment described herein is a method that includes detecting a throwing action causing a physical projectile to move along a rail on an apparatus. In response to determining the physical projectile reaches a predefined position on the rail, the method includes emitting a signal from the apparatus indicating a virtual path in free space of a virtual object launched by the throwing action, wherein the virtual object represents the physical projectile. 
     Another embodiment described herein is a apparatus includes a rail, a projectile moveably mounted onto the rail, and an emitter configured to, in response to a throwing action causing the projectile to move along the rail, transmit a signal to a first external device indicating a virtual path in free space of a virtual object launched by the throwing action, wherein the virtual object represents the projectile. 
     Another embodiment described herein is a apparatus includes a rail, a projectile moveably mounted onto the rail, and a speaker configured to, in response to a throwing action causing the projectile to move along the rail, output audio simulating a virtual object representing the physical object flying through free space in a direction away from the apparatus. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       So that the manner in which the above recited aspects are attained and can be understood in detail, a more particular description of embodiments of the invention, briefly summarized above, may be had by reference to the appended drawings. 
       It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments. 
         FIGS. 1A and 1B  illustrate a throwing apparatus for moving a projectile along a guide rail, according to one embodiment described herein 
         FIG. 2  is a cross-section of the throwing apparatus illustrated in  FIG. 1B , according to one embodiment described herein. 
         FIG. 3  illustrates a throwing action using the throwing apparatus, according to one embodiment described herein. 
         FIG. 4  is a block diagram of the throwing apparatus, according to one embodiment described herein. 
         FIG. 5  is a flowchart for launching a virtual object corresponding to a throwing action, according to one embodiment described herein. 
         FIG. 6  illustrates interacting with an external device using the virtual object, according to one embodiment described herein. 
         FIG. 7  illustrates interacting with multiple external devices using the virtual object, according to one embodiment described herein. 
         FIG. 8  is a flowchart for interacting with a virtual target using the virtual object, according to one embodiment described herein. 
     
    
    
     To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures. It is contemplated that elements disclosed in one embodiment may be beneficially utilized on other embodiments without specific recitation. 
     DETAILED DESCRIPTION 
     Embodiments herein describe a throwing apparatus that includes a projectile that slides on a rail. In one embodiment, the apparatus is attachable to an arm or hand of a user. In one example, as the user makes a throwing action, the projectile slides along the rail until the projectile locks into place at an end of the rail. In response, the throwing apparatus launches a virtual object representing the projectile along a virtual path extending away from the throwing apparatus. Stated differently, the throwing apparatus determines what path the projectile would take if the projectile continued in the direction it was thrown and launches the virtual object along that path. In this manner, the throwing apparatus simulates the projectile flying through free space using the virtual object while the projectile remains on the throwing apparatus. 
     In one embodiment, the throwing apparatus includes an output device (e.g., a speaker) that simulates the projectile traveling on the virtual path. For example, the speaker may output a sound that corresponds to the projectile flying through the air. As the virtual object moves along the path away from the user, the speaker may decrease the volume of the sound to indicate that the distance between the user and the virtual object is increasing. In one embodiment, the virtual object returns to the throwing apparatus—e.g., a boomerang effect or in response to ricocheting off a wall. As such, the output device increases the sound thereby indicating to the user that the virtual object is approaching the apparatus. When the sound indicates the virtual object has reached the apparatus, the user may then make a catching action which moves the projectile on the rail back to a starting location. 
     In one embodiment, the throwing apparatus is part of an immersive storytelling environment that includes one or more storytelling devices (also referred to as interactive devices) that are each capable of producing some auditory and/or visual effect, to create an immersive and interactive storytelling experience for a user. In one embodiment, the actions performed by the storytelling devices may vary depending on a user action. For example, in a simulated battle scenario, the throwing action and the resulting virtual path may dictate what target is struck by the virtual object. In one embodiment, the throwing apparatus may include an emitter that transmits a light signal using a predefined radiation pattern simulating the virtual path of the projectile. Any storytelling device within the radiation pattern receives the light signal and determines it is the target of the projectile. In response, the storytelling device may cause a corresponding action figure to fall down or output a noise indicating the action figure was hit by the virtual object such as a clang or a grunt. 
       FIGS. 1A and 1B  illustrate a throwing apparatus  100  for moving a projectile  105  along a guide rail  110 , according to one embodiment described herein. Specifically,  FIG. 1A  illustrates a top view of the throwing apparatus  100 . As shown, the throwing apparatus  100  includes a support member  135  on which the guide rail  110  is mounted. Moreover, the throwing apparatus  100  includes two pairs of fasteners  115  which may be used to secure the support member  135  onto the forearm of a user. However, instead of being attached to arm of the user, the throwing apparatus  100  can be held by the user, or attached to the back of the user&#39;s hand. 
     In  FIG. 1A , the projectile  105  is shown at a starting position along the rail  110 . For example, a first end of the rail  110  may be the starting position while the second, opposite end of the rail  110  is the end position. In response to the forces applied to the projectile  105  by the user when performing a throwing action, the projectile  105  slides along the rail  110  from the starting position to the end position. In the embodiment shown, the throwing apparatus  100  includes a locking element  120  for holding the projectile at the end position on the rail  110 . That is, once the user performs the throwing action and the projectile reaches the end position on the rail  110 , the locking element  120  holds the projectile at a stationary location. As will be discussed later, the user can release the locking element to permit the projectile to return to the starting position on the rail  110 . 
     As shown, the projectile  105  represents a shield which slides along the track  110 . However, the shape of the projectile  105  may be selected to represent any object such as a boomerang, a baseball, javelin, arrow, and the like. In one embodiment, the throwing apparatus  100  is a toy device that permits the user to play the role of a superhero who uses the projectile  105  to attack virtual or physical targets (e.g., toys) or defend against attacks from the targets or other players in an immersive storytelling environment. 
       FIG. 1B  illustrates a side view of the throwing apparatus  100 . As shown, the projectile  105  includes an upper portion  105  and a sliding element  135  which interlocks with the rail  110 . As described above, the upper portion  105  is shaped to represent a particular object—e.g., ball, shield, boomerang, etc. The sliding element  135  couples the upper portion to the rail  110  to enable the projectile  105  to slide from the starting position (e.g., the leftmost end of the rail  110 ) to the end position (e.g., the rightmost end of the rail  110 ), and vice versa. 
       FIG. 2  is a cross-section of the throwing apparatus  100  illustrated in  FIG. 1B , according to one embodiment described herein. Specifically, the cross-section is taken along the dotted lines labeled A-A in  FIG. 1B . The rail  110  is formed in the shape of an “I” which provides respective recesses into which the sliding portion  135  of the projectile  105  extends. Interlocking the sliding element  135  and the rail  110  keep the projectile  105  from coming off the rail  110  when the user performs a throwing action. For example, the rail  110  may include mechanical stops (e.g., locking mechanism  120 ) which prevent the sliding element  135  from moving past the respective ends of the rail  110 . 
     However, the features shown in  FIG. 2  are just one example of a design that can be used to interlock the sliding element  135  and the rail  110 . In another embodiment, a portion of the sliding element  135  may be disposed within a cavity of the rail  110  which attaches the element  135  to the rail  110 . In another example, the rail  110  may be raised above the support element  125  such that there is a gap between the rail  110  and the support member  125 . The sliding element  135  may completely surround the rail  110  to guide the projectile  105  along the rail  110 . The rail  110  may include supports at its respective ends (not shown) which attach the raised rail  110  to the support element  125 . In yet another example, the rail  110  may be defined by a longitudinal recess in the support element  125  where the walls of the recess define the rail  110 . The sliding element  135  may include a portion that extends into this recess and contacts the walls in order to move the projectile  105  along the rail  110 . 
       FIG. 2  illustrates that the sliding element  135  slides along the rail  110  using smooth surfaces. As shown, the sliding element  135  includes surfaces in a facing relationship with one or more surfaces in the rail  110 . Because these surfaces are smooth, the friction caused when these surfaces contact can be overcome by the forces applied by the user when making the throwing motion. However, in another embodiment, the sliding element  135  or the rail  110  may include rollers or bearings which further reduce friction between these components. For example, instead of the surfaces of the sliding element  135  and the rail  110  contacting, the sliding element  135  may include a plurality of ball bearings which contact the surfaces of the rail  110  and permit the projectile  105  to slide back and forth on the rail  110 . 
       FIG. 3  illustrates a throwing action using the throwing apparatus  100 , according to one embodiment described herein. As shown by arrow  145 , the projectile  105  slides along the rail  110  from the starting position (i.e., the position illustrated in  FIGS. 1A and 1B ) to the end position shown here. The projectile  105  may slide along the rail  110  until reaching the locking element  120  (not shown) which holds the projectile  105  at the end position. Moreover, the apparatus  100  includes a second locking element  140  which can be used to hold the projectile  105  at the starting position. For example, the throwing apparatus  100  may include a button which the user presses in order to release the locking element  140  to permit the projectile  105  to move from the starting position to the end position as shown by arrow  145 . Similarly, the same button may be pressed to release the locking mechanism  120  shown in  FIG. 1A  to permit the projectile  105  to return to the starting position. 
     Although not necessary, the locking elements  120  and  140  prevent the projectile  105  from sliding on the rail in response to other actions besides throwing actions. For example, the user may perform other actions while wearing the throwing apparatus  100  besides a throwing action such as jumping, raising his arm, spinning, etc. These actions may apply a force to the projectile  105  that would otherwise cause the projectile  105  to slide along the rail  110  but for the locking elements  120 ,  140  which hold the projectile  105  stationary. The locking elements  120 ,  140  prevent other user actions from being misinterpreted as a throwing action by the throwing apparatus  110 . Once the user wants to perform a throwing action, she can press a button or a switch which releases locking element  140  and permits the projectile  105  to move along the rail  110 . Similarly, before the projectile  105  can be thrown again, the user may activate a button which releases locking element  120  so that the projectile  105  can return to the starting position. 
       FIG. 4  is a block diagram of the throwing apparatus  100 , according to one embodiment described herein. The throwing apparatus  100  includes one or more motion sensors  405 , a throwing simulator  410 , a speaker  425 , and emitter  430 . The motion sensors  405  may include any sensor for measuring motion or orientation of the throwing apparatus  100  or the projectile—e.g., accelerometer, gyroscope, and the like. For example, when performing a throwing action, the motion sensors  405  may determine the orientation of the apparatus  100  when the projectile reaches the end position of the rail (or any other predefined position) as well as the acceleration of the projectile as it slides along the rail. The motion sensors  405  may be disposed on the support element or the projectile in order to measure the orientation of the throwing apparatus  100  and the forces corresponding to the throwing action. 
     The throwing simulator  410  includes a processing element  415  and a virtual path  420 . The processing element  415  may be a general purpose computer processor or an application specific integrated circuit (ASIC). Although illustrated as hardware, the functions performed by the processing element  415  may be implemented using firmware or a software application. In one embodiment, the processing element  415  processes the data captured by the sensor  405  to identify the virtual path  420  of a virtual object launched by the throwing action projectile. Although the projectile does not leave the throwing apparatus  100 , the throwing simulator  410  identifies the path  420  the projectile would have followed and launches the virtual object representing the projectile on this path  420 . 
     In one embodiment, the speaker  425  outputs audio indicated a position of the virtual object on the virtual path  420 . For example, using a velocity of the projectile as it slides along the rail, the speaker  425  generates a sound simulating the current location of the virtual object on the virtual path  420 . For example, if the projectile is a shield, the speaker  425  outputs audio of the shield flying through the environment (e.g., a whooshing or whizzing sound). By changing the volume of the audio, the throwing simulator  410  can simulate a distance from the virtual object (i.e., the virtual shield) to the throwing apparatus  100  as the virtual object traverses the virtual path  420 . For example, when the virtual object is first launched (e.g., when the projectile reaches the end position on the rail), the speaker  425  outputs the loudest sound. To simulate the virtual object traversing the virtual path  420  in a direction away from the throwing apparatus  100 , the speaker  425  gradually reduces the volume of the audio over time. 
     In one embodiment, the throwing apparatus  100  uses the emitter  430  to indicate to an external device (e.g., a storytelling device) the virtual path  420 . For example, in response to launching a virtual object along the path  420 , the emitter  430  may transmit a line-of-sight signal (e.g., an infrared or visible light signal) in a direction of the virtual path  420 . In one embodiment, the emitter  430  may be disposed on a front facing surface of the throwing apparatus so that the line-of-sight (LOS) signal has a beam pattern extending in the same direction as the virtual path  420 . Any external devices receiving the LOS signal know they are along the virtual path  420  and should respond accordingly. For example, an action figure mounted on the device may perform a motion or emit a sound that simulates being struck by the projectile. 
     In one embodiment, the emitter  430  may transmit data in a radio frequency (RF) signal indicating the virtual path  420  traveled by the projectile. The data may include different geographic points or coordinates corresponding to the virtual path  420 . Using this information, an external device can determine whether it lies along the virtual path  420 , and thus, if it is struck by the virtual object. 
       FIG. 5  is a flowchart of a method  500  for launching a virtual object corresponding to a throwing action, according to one embodiment described herein. At block  505 , the throwing apparatus detects a throwing action launching a virtual object. As mentioned above, a user may move the throwing apparatus in a throwing motion which moves the projectile along the rail. The throwing apparatus includes motion sensors that detect the forces corresponding to this motion. In one embodiment, the throwing simulator on the apparatus processes the data captured by the sensors to determine if the user performed the throwing motion. For example, the throwing simulator may have a minimum velocity threshold required before a user action is classified as a throwing action. If the velocity of the projectile as it slides along the rail does not satisfy this threshold, the throwing simulator may ignore the motion or provide audio feedback instructing the user to try again. 
     In another embodiment, the throwing apparatus may detect the throwing action by the projectile sliding down the rail and being locked into place by a locking element (e.g., locking element  120  shown in  FIG. 1B ) at the end position of the rail. Stated differently, because the user has moved the projectile from the starting position to the end position, the throwing simulator determines that the user intended to perform a throwing action. 
     In response to detecting the throwing action, the throwing simulator launches a virtual object representing the projectile. The physical projectile remains disposed on the throwing apparatus but the virtual object is launched in a similar direction as the movement of the physical projectile on the rail. As described below, the throwing apparatus can simulate the effects of launching the physical projectile into free space using the virtual object without any of the safety issues related to throwing physical objects. 
     At block  510 , the throwing simulator determines a virtual path of the projectile using motion data corresponding to the throwing action. Stated differently, the throwing simulator identifies the path the virtual object follows after being launched from the throwing apparatus. In one embodiment, the throwing simulator uses one or more gyroscopes to determine the orientation of the throwing apparatus. Because the direction the virtual object is launched corresponds to the direction in which the rail extends, once the orientation of the apparatus is found, the throwing simulator can calculate the virtual path which extends in the same direction as the rail. Put differently, in this example, the virtual path extends in the same direction defined by the longitudinal axis of the rail. 
     In one embodiment, the throwing simulator calculates the velocity of the projectile, and thus, the velocity of the virtual object as it travels along the virtual path. For example, an accelerometer may be mounted on the projectile or the throwing apparatus to measure the forces applied by the throwing motion. From this measurement, the throwing simulator can identify the velocity at which the virtual object moves away from the throwing apparatus. Because calculating the speed of the virtual object is not dependent on identifying a virtual path, the throwing simulator does not need to identify a specific virtual path in free space in order to determine the speed at which the virtual object moves away from the throwing apparatus. 
     At block  515 , a speaker on the throwing apparatus outputs audio that simulates the virtual object traversing the virtual path away from the apparatus. The audio may correspond to a sound the physical projectile would make if thrown, for example, a whooshing or buzzing sound. In one embodiment, as the virtual object moves away from the throwing apparatus along the virtual path, the throwing simulator instructs the speaker to decrease the volume of the audio thereby mimicking the sound effect of a real-world object moving away from the throwing apparatus. In one embodiment, the throwing simulator uses the velocity of the virtual object measured at block  510  to determine how rapidly to change the volume of the audio. For example, the faster the velocity, the faster the audio is decreased. In this manner, the throwing simulator can indicate to the user the speed at which the virtual object is travelling. 
     In one embodiment, the throwing simulator does not need to calculate the virtual path in order to simulate the virtual object traveling away from the throwing apparatus. In response to a throwing action, the simulator may instruct the speaker to begin outputting audio corresponding to the virtual object being launched. That is, the throwing apparatus does not need to know the direction the object is launched or the orientation of the apparatus when the virtual object is launched in order to control the audio to simulate the virtual object traveling away from the user. Moreover, the throwing simulator does not need to calculate the velocity of the virtual object and instead can use a predefined sound recording simulating the projectile flying away from throwing apparatus. 
     At block  520 , the throwing apparatus emits a signal indicating the virtual path of the object to an external device (e.g., a storytelling device). In one embodiment, the emitter is a LOS emitter (e.g., an infrared emitter, visible light emitter, or ultraviolet emitter) which has a defined radiation pattern. An example of using a radiation pattern to indicate the virtual path of a virtual object is shown in  FIG. 6 . 
       FIG. 6  illustrates an emitter  610  providing an indication of the virtual path  620  to a storytelling device  630  (i.e., an external device) in an immersive storytelling environment  600 . As shown by arrow  605 , the projectile  105  on the throwing apparatus  100  has moved from the starting position to the end position. In response, the throwing apparatus  100  launches a virtual object  625  along a virtual path  620 . 
     The throwing apparatus  100  activates an emitter  610 —e.g., a LOS emitter—which transmits a signal with a radiation pattern  615  which may have a conical shape. Any receivers inside of the radiation pattern  615  can detect the signal while receivers outside the pattern  615  cannot. As shown, the storytelling device  630  includes a receiver  635  within the radiation pattern  615  which detects and reads the signal transmitted by the emitter  610 . The signal may include modulated data that informs the device  630  that the throwing apparatus  100  launched a virtual object  625  representing a thrown projectile. 
     Because the storytelling device  630  received the signal (i.e., is within the radiation pattern  615 ), the device  630  knows it is along the virtual path  620 , and thus, is struck by the virtual object  625 . In response, the storytelling device  630  may cause an action  FIG. 640  thereon to perform an action as if the  FIG. 640  was physically struck by the projectile. For example, the action  FIG. 640  may fall over, vibrate, bend over, and the like. In this manner, the storytelling system  600  can simulate the action  FIG. 640  being struck by the physical projectile without having to actually launch the projectile. If multiple storytelling devices  630  receive the signal (i.e., are within the radiation pattern  615 ), in one embodiment, all the storytelling devices  630  cause their corresponding action  FIG. 640  to simulate being struck by the projectile. Alternatively, the apparatus  100  may select one of the storytelling device  630 . To do so, each storytelling device  630  transmits a reply message to the apparatus  100  once the signal transmitted by the emitter  510  is received. If multiple reply messages are received, the apparatus  100  selects the storytelling device  630  that replied first, which may be the device  630  that is closest to the apparatus  100 . The apparatus  100  may then transmit a second message using the emitter  610  with an ID of the selected storytelling device  630  thereby informing the multiple storytelling devices  630  within the radiation pattern  615  which one should simulate being hit by the projectile. 
     In one embodiment, the device  630  may know the distance between itself and the throwing apparatus  100 , and thus, based on the velocity of the virtual object  625  determines when the virtual object  625  strikes the action  FIG. 640 . For example, IR range detection or Received Signal Strength Indicator (RSSI) may be used to calculate a distance between the apparatus  100  and the storytelling devices  630 . However, in other embodiments, the distance between the throwing apparatus  100  and device  630  may be unknown. The storytelling device  635  may wait a predefined time (e.g., a predefined delay derived from an average assumed or estimated distance) after receiving the signal from the emitter  610  before causing the action  FIG. 640  to fall down. To increase realism, the emitter  610  may inform the storytelling device  630  of the velocity at which the virtual object  625  was launched. Although in this example the device  630  does not know the separation distance and thus cannot calculate the precise time the object  625  reaches the action  FIG. 640 , the storytelling device  630  can adjust the predefined time in response to the velocity. For example, as the velocity increases, the storytelling device  630  reduces the predefined time it waits before simulating the effects of the projectile striking the action  FIG. 640 . Conversely, as the velocity decreases, the device  630  may increase the predefined time before the action  FIG. 640  reacts to the virtual object  625 . 
     In one embodiment, instead of the storytelling device  630  determining how long to wait before the action  FIG. 640  reacts to the launched virtual object  625 , this calculation may be performed by the throwing simulator in the throwing apparatus  100 . The throwing simulator may calculate the time delay using the velocity and then wait to transmit a signal on the emitter  610  until the delay has expired. Once the storytelling device  630  receives the signal, the device  630  can immediately instruct the action  FIG. 640  to simulate getting struck by the projectile. Doing so may reduce the amount of circuitry and logic on the storytelling device  630  which can reduce its cost. 
     In one embodiment, the device  630  includes actuators which are used to move some or all of the action  FIG. 640 . The actuators may include a vibration system, motors, gears, and the like. For example, if the projectile is a shield, the signal transmitted by the emitter instructs the device  630  to control the actuators so that the action  FIG. 640  moves in a manner like the figure was physically hit by the shield. Advantageously, using the LOS signals to transmit instructions from the throwing apparatus  100  to the target storytelling device  630  permits the device  630  to respond to the user action without the projectile (or user) having to actually strike the action  FIG. 640 . 
     In one embodiment, the storytelling device  630  also includes an output device which may output sound or videos. For example, the actuators and the output device may be used in tandem to simulate the effect of the shield striking the action  FIG. 640 . For instance, while the actuators move the action  FIG. 640 , the output device may generate a grunting noise. 
     In one embodiment, the radiation pattern  615  and the virtual path  620  are treated as being the same. That is, the radiation pattern  615  is the virtual path  620  traversed by the virtual object  625 . Any storytelling device  630  within the radiation pattern  615  is deemed to be on the virtual path  620 , and thus, is struck by the virtual object  625 . In one embodiment, the radiation pattern  615  may be shaped using lens or reflectors so that the pattern  615  more closely aligns to an expected path that a launched projectile would follow. For example, using a lens can prevent the radiation pattern  615  from being too wide radially so that the transmitted signal is received by storytelling devices that are positioned to the side of the of the throwing apparatus  100  rather than in front of the apparatus  100  as shown in  FIG. 6 . 
     In one embodiment, for novice users, the radiation pattern  615  may be expanded radially such that targets that are further away from the longitudinal direction of the rail on the apparatus  100  are within the radiation pattern  615 . For example, a storytelling device that is beyond 30 degrees from the center of the radiation pattern  615  may still receive the signal transmitted by the emitter. However, as the user progress and levels up, the apparatus  100  may narrow the radiation pattern  615  so that only storytelling devices directly in front of the apparatus  100  when the user launches the virtual object  625  are within the radiation pattern  615 , and thus, are struck by the virtual object  625 . 
     Because LOS signals can reflect off certain surfaces—e.g., mirrors or smooth white walls—the virtual path  620  may bounce off reflective surfaces before reaching the storytelling device  630 . Moreover, in one embodiment, the throwing apparatus may require the user to strike the storytelling device  630  using a virtual path  620  that bounces off a reflective surface. For example, using a room mapping technique, the throwing apparatus  100  may be aware of the locations and the reflectivity of the surfaces in the room and the relative location of the storytelling device  630  to these surfaces. In order to unlock a new skill, the throwing apparatus  100  may require the user to perform the throwing action and launch the virtual object  625  at one of the reflective surfaces at an angle that then results in the radiation pattern  615  reflecting off the surface and striking the storytelling device  630 . Because the throwing apparatus knows the relative location of the surfaces and the device  630  in the room, the throwing simulator can use geometry to determine if the user successfully launched the virtual object  625  along a virtual path  620  that strikes the storytelling device  630  after being reflected off a surface. 
     In one embodiment, the shape of the radiation pattern  615  of the emitter  610  does not determine whether the storytelling device  630  is struck by the virtual object  625 . For example, the emitter  615  may be an RF emitter that broadcasts signals 360 degrees from the apparatus such that storytelling devices that are not along the virtual path  620  still receive the signal. However, the signal may include location data such as the location of the throwing apparatus  100 , the direction of the virtual path  620 , geographic points of the virtual path  620 , and the like which enable the storytelling device  630  to determine if the device  630  is along the virtual path  620 . Thus, in this example, the virtual path  620  is different than the radiation pattern  615  used by the emitter  610  but the emitter  610  transmits location data which enables the storytelling device  630  to determine whether it is on the virtual path  620  and is struck by the virtual object  625 . 
     In one embodiment, the storytelling device  630  may include its own emitter from transmitting a signal back to a receiver disposed on the throwing apparatus  100 . For example, once the receiver  635  detects the signal and the device  630  determines it is along the virtual path  620 , the storytelling device  630  transmits a reply signal (a LOS or RF signal) to the apparatus  100  indicating that the device  630  was struck by the virtual object  625 . In one embodiment, the storytelling device  630  may send the reply signal once it instructs the action  FIG. 640  to simulate being struck by the projectile. Put differently, the reply signal informs the throwing apparatus  100  that the virtual object  625  has hit the target. As such, the throwing apparatus  100  can then use its output device to supplement any output devices on the device  630 . For example, the speaker on the throwing apparatus  100  may output a clanging noise at the same time the action  FIG. 640  is falling down. Moreover, as shown in  FIG. 6 , after hitting the storytelling device  630 , the virtual path  620  returns to the throwing apparatus  100 —i.e., a boomerang effect. The throwing apparatus  100  can use the reply signal to determine when the speaker on the throwing apparatus  100  should begin to increase the audio corresponding to the flying projectile to simulate the virtual object  625  returning to the throwing apparatus. However, this is not necessary. In other embodiments, the virtual path  620  may be only one way as in the case of shooting an arrow or throwing a javelin. In this example, the apparatus  100  may stop outputting sound corresponding to the flying projectile once the device  630  confirms it was hit by the virtual object  625 . 
     Returning to method  500 , at block  525 , the throwing simulator determines whether the user performs a catching action when the virtual object finishes traversing the virtual path and returns to the throwing apparatus. Of course, if the action path does not return to the throwing apparatus, then this portion of method  500  could be skipped. 
     In one embodiment, to successfully perform the catching action, a user may need to return the projectile from the end position to the starting position synchronous with the audio outputted from the speaker. For example, once the audio increases to the original volume used when launching the virtual object, the user must perform the catching action such as pressing a button to release the locking element holding the projectile at the end position and raising her arm so that gravity pulls the projectile from the end position to the starting position. In another example, performing the throwing action may compress a spring that is then released during the catching action to force the projectile back to the starting position. In any case, the user may have to perform the catching action within a certain time window in order to simulate successfully catching the returning virtual object. 
     If the catching action was successful, at block  530 , the throwing apparatus permits the user to immediately perform another throwing action. For example, method  500  may return to block  505  once another throwing action is detected. However, if the user did not perform the catch within the time window, method  500  instead proceeds to block  535  where the throwing apparatus requires a cool down period before permitting the user to perform another throwing action. For example, the throwing apparatus  100  may prevent the user from unlocking either of the locking elements  120  or  140  shown in  FIGS. 1A and 3  thereby preventing the user from moving the projectile along the rail. Alternatively, the user may be able to move the projectile, but the throwing simulator does not respond to a throwing action until the cool down period has expired. Once the cool down period expires, the method  500  may return to block  505  to detect another throwing action. 
       FIG. 7  illustrates interacting with multiple external devices using the virtual object, according to one embodiment described herein. In storytelling system  700 , the virtual object  625  strikes multiple storytelling device  630 . That is, two of the storytelling devices  630  lie along the same virtual path  705 . As shown, the virtual path  705  first extends from the throwing apparatus  100  to the first storytelling device  630 A. For example, because the storytelling device  630  is within the radiation pattern  615 , the storytelling device  630 A determines it was targeted by the user and is along the virtual path  705 . 
     Instead of the path  705  stopping or returning to the throwing apparatus  100 , the virtual path  705  extends from the first device  630 A to a second storytelling device  630 B. Put differently, the virtual object  625  ricochets off the first device  630 A and strikes the second device  630 B. In one embodiment, whether or not the virtual object ricochets towards a second target is determined by the skill level of the user. For example, a novice user may be unable to cause the virtual object  625  to strike multiple targets. However, as the user advances (e.g., improves her throwing action, unlocks skills, or accomplishes specific tasks or goals) the ability to strike several targets using one throwing action is permitted. Moreover, as the user level increases, the throwing apparatus may increase the odds that striking the first device  630 A results in a ricochet striking the second target  630 B instead of the virtual path  705  stopping at the first target  630 A or returning to the throwing apparatus  100 . 
     To perform the ricochet, the throwing apparatus  100  may first ensure the virtual object  625  strikes at least one target. For example, the first storytelling device  630 A may transmit a reply signal to the apparatus  100  indicating the device  630  received the signal transmitted by the emitter  610 . Once this signal is received, the throwing apparatus  100  may broadcast a second signal using a different emitter—e.g., an RF emitter which broadcasts using a wide radiation pattern—to identify a second storytelling device  630 B which is outside the radiation pattern  615  of the emitter  610 . The throwing apparatus  100  may receive replies from multiple different device  630  and select one of the devices  630 —i.e., target device  630 B—as the next target. The throwing apparatus  100  may select the target device depending on signal strength of the reply signals, a priority corresponding to the devices, or if a relationship exists between the device  630 A already struck by the virtual object  625  and one of the devices responding to the second signal. In one embodiment, storytelling device  630 A does not transmit a reply to the second signal since it was already struck by the virtual object  625 . 
     Once the next target is selected, the throwing apparatus  100  may transmit a third signal to the selected target—i.e., storytelling device  630 B—indicating it was selected as the next target of the virtual object  625 . After a delay simulating the time required by the virtual object  625  to travel from the first device  630 A to the second device  630 B, the storytelling device  630 B moves its action figure to simulate being struck by the projectile. Moreover, the speaker of the throwing apparatus  100  may maintain the sound of the projectile at a constant volume to indicate the projectile is ricocheting to another target rather than returning to the apparatus  100 . However, if the locations of the storytelling devices  630  relative to the throwing apparatus  100  are known, then the speaker can change the volume depending on the portion of the virtual path  705  between the storytelling device  630 A and  630 B. As shown in  FIG. 7 , this portion of the virtual path  705  is essentially the same distance from the throwing apparatus  100 , and thus, the speaker may output a constant volume. However, if the first device  630 A was on one side of the apparatus  100  but the second device  630 B was on the other, the speaker may increase and then decrease the volume of the audio output as the virtual object  625  flies past the throwing apparatus  100  in order to strike the second storytelling device  630 B after ricocheting off device  630 A. Moreover, the throwing apparatus  100  may continue to extend the virtual path  705  to other storytelling devices  630  by repeating the process described above—i.e., the virtual object  625  can strike three or four targets during one throw. 
     In another embodiment, the apparatus  100  may perform ricochets by broadcasting an RF message to multiple storytelling devices  630  at once. The message could include an ID of the storytelling devices  630  and when that storytelling device  630  should simulate being struck by the projectile. For example, the broadcasted message could indicate that storytelling device  630 A is struck in two seconds, while storytelling device  630 B is struck in four seconds. The storytelling devices  630  would wait the indicated delay before simulating their respective action figure being struck by the projectile. 
     In another embodiment, instead of the throwing apparatus  100  determining the next target for the virtual object  625 , the storytelling device  630 A may identify the next target. For example, the storytelling device  630 A may use a RF emitter to select a neighboring storytelling device as the next target. The device  630 A may transmit a RF signal and select one of the storytelling devices that send a reply based on signal strength indicating which one of the storying telling devices is closest to the device  630 A. Permitting the storytelling device  630 A to select the next target may be desired since this device  630 A can more easily determine its closest neighboring device—e.g., device  630 B—which is the most realistic target following a ricochet. Once the next target is selected, the device  630 A may inform the apparatus  100  so it can output the appropriate audio output to the user. 
       FIG. 8  is a flowchart of a method  800  for interacting with a virtual target using the virtual object, according to one embodiment described herein. At block  805 , the throwing apparatus outputs a direction of a virtual target to the user. For example, the speaker may state, “What out, there is an enemy at your two o&#39;clock,” or “There is an enemy to your left!” Alternatively, a display on the throwing apparatus (e.g., or other output device) illustrates the location of the virtual target relative to the user. Using a current orientation of the throwing apparatus, the throwing simulator determines whether the user performs a throwing action resulting in launching a virtual object in the direction of the virtual target. To do so, at block  810 , the throwing apparatus performs block  505 - 515  of method  500 . 
     At block  815 , the throwing simulates determines whether the direction of the virtual path resulting from the throwing action is in the direction of the virtual target. If so, at block  820 , the speaker indicates that the virtual target was hit, but if not, at block  825 , the speaker indicates the target was missed. In one embodiment, the throwing simulator may wait to perform either block  820  or block  825  until the virtual object has already traversed the virtual path. For example, the throwing simulator may wait until a predefined delay (e.g., a few seconds) before indicating to the user whether the target was hit or not. If there was a hit, the speaker may output a sound indicating that the target was hit such as a grunt or a clang. Moreover, the speaker may begin to increase the audio output of the flying projectile to simulate the projectile returning to the throwing apparatus. As mentioned above, the user may have to successfully perform a catching action in order to again use the projectile to attack another virtual target when method  800  repeats. 
     If the virtual path does not correspond to the location of the virtual target, the speaker may not output audio of the projectile returning to the throwing apparatus. Instead, a cool down period may be required which simulates the time a user would need to go and retrieve the projectile before another throw can be attempted. Put differently, the virtual object may exhibit the boomerang effect only if the user successfully hit the virtual target. In this manner  FIG. 8  illustrates a method for using the throwing apparatus to hit virtual targets rather than real targets (e.g., storytelling devices  630 ) shown in  FIGS. 6 and 7 . 
     In one embodiment, the throwing apparatus may use a random number generator to determine if the virtual target is hit. The odds that the target is hit may vary depending on the skill level of the user in the game or the level of the enemy represented by the virtual target. For example, a super villain may be more difficult to hit than a henchman. Thus, even if the virtual target is along the virtual path, it is possible the user may still miss the target. Moreover, the random number generator may be used to determine hits if the virtual path is not known. For example, if directional information is not available, the throwing apparatus can use the skill level of the user to determine if the virtual target is struck. 
     Moreover, the throwing apparatus may detect other user actions besides throwing actions. For example, the user may perform a thrusting action by quickly accelerating the throwing apparatus in a direction away from the user as if to strike an enemy. However, the projectile may remain stationary during the thrusting action, thereby distinguishing the thrusting action from the throwing action. The thrusting action may be used to simulate a melee attack on a target while the throwing action simulates a ranged attack. In another example, the throwing apparatus may detect a swinging action where the user swings the throwing apparatus along a curved path while the projectile remains stationary on the rail. Like the thrusting action, the swinging action may simulate a melee attack on a target. In both of these actions, the throwing apparatus may use an emitter to inform a storytelling device within range of the emitter of the attack. In response, the storytelling device may cause a corresponding action figure to simulate being hit by the attack using one or more actuators. In this manner, the throwing apparatus can detect multiple different user actions which can affect the storytelling devices in different ways. For example, the action figure may react differently when hit by a melee attack rather than a ranged attack. In another example, the actions may be used to simulate attacks against virtual targets rather than physical targets such as the storytelling devices. 
     In the preceding, reference is made to embodiments of the invention. However, it should be understood that the invention is not limited to specific described embodiments. Instead, any combination of the preceding features and elements, whether related to different embodiments or not, is contemplated to implement and practice the invention. Furthermore, although embodiments of the invention may achieve advantages over other possible solutions and/or over the prior art, whether or not a particular advantage is achieved by a given embodiment is not limiting of the invention. Thus, the aspects, features, embodiments and advantages described herein are merely illustrative and are not considered elements or limitations of the appended claims except where explicitly recited in a claim(s). Likewise, reference to “the invention” shall not be construed as a generalization of any inventive subject matter disclosed herein and shall not be considered to be an element or limitation of the appended claims except where explicitly recited in a claim(s). 
     As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. 
     Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
     A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. 
     Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing. 
     Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). 
     Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. 
     The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order or out of order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions. 
     While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.