title: What does invoke() do in Ursina module
body: <p>I imported <a href="https://www.ursinaengine.org" rel="nofollow noreferrer"><code>Ursina</code> module</a>. It is a game engine.</p>
  
  <p>I looked up a tutorial and in the code <code>invoke()</code> was used. I tried to find the documentation but there seems to be no information about it. The code from the tutorial is given below:</p>
  
  <pre><code>from ursina import *
  
  # create a window
  app = Ursina()
  
  # most things in ursina are Entities. An Entity is a thing you place in the world.
  # you can think of them as GameObjects in Unity or Actors in Unreal.
  # the first paramenter tells us the Entity's model will be a 3d-model called 'cube'.
  # ursina includes some basic models like 'cube', 'sphere' and 'quad'.
  
  # the next parameter tells us the model's color should be orange.
  
  # 'scale_y=2' tells us how big the entity should be in the vertical axis, how tall it should be.
  # in ursina, positive x is right, positive y is up, and positive z is forward.
  
  player = Entity(model='cube', color=color.orange, scale_y=2)
  
  # create a function called 'update'.
  # this will automatically get called by the engine every frame.
  
  def update():
      player.x += held_keys['d'] * time.dt
      player.x -= held_keys['a'] * time.dt
  
  # this part will make the player move left or right based on our input.
  # to check which keys are held down, we can check the held_keys dictionary.
  # 0 means not pressed and 1 means pressed.
  # time.dt is simply the time since the last frame. by multiplying with this, the
  # player will move at the same speed regardless of how fast the game runs.
  
  
  def input(key):
      if key == 'space':
          player.y += 1
          invoke(setattr, player, 'y', player.y-1, delay=.25)
  
  
  # start running the game
  app.run()
  </code></pre>
  
  <p>Please help me. </p>
  
  <p>P.S. I am using Linux Mint.</p>