public override void Update()
 {
     base.Update();
     {
         // move
         Vector3 move_dir = Vector3.zero;
         move_dir.x       = Input.GetAxis("Horizontal");
         move_dir.y       = Input.GetAxis("Vertical");
         m_rigid.velocity = move_dir * m_move_speed;
     }
     {
         // look mouse cursor
         Ray   ray      = Camera.main.ScreenPointToRay(Input.mousePosition);
         Plane plane    = new Plane(new Vector3(0.0f, 0.0f, 1.0f), Vector3.zero);
         float distance = 0;
         if (plane.Raycast(ray, out distance))
         {
             m_rigid.rotation = Quaternion.LookRotation(ray.GetPoint(distance) - m_trans.position);
         }
         m_rigid.angularVelocity = Vector3.zero;
     }
     if (Input.GetButton("Fire1"))
     {
         ExampleBulletManager bm = ExampleGame.GetBulletManager();
         Vector3 center          = m_trans.position;
         Vector3 direction       = m_trans.forward;
         for (int i = 0; i < 32; ++i)
         {
             Vector3 pos = center + new Vector3(R(), R(), 0.0f).normalized *R() * 0.75f;
             bm.Shoot(pos, direction * 20.0f, 5.0f, m_bcol.m_id);
         }
     }
 }
    public override void Update()
    {
        float   spread = 0.4f;
        Vector3 pos    = m_trans.position + m_trans.forward * 1.0f;

        for (int i = 0; i < 24; ++i)
        {
            Vector3 dir   = (m_trans.forward + (new Vector3(R(1.0f), R(1.0f), 0.0f)).normalized * spread).normalized;
            float   speed = 6.0f + R(0.25f);
            m_bullets.Shoot(pos, dir * speed, 4.0f, m_bcol.m_id);
        }
        base.Update();
    }