Exemplo n.º 1
0
        public override void update(float dt, double update_time)
        {
            if (MyCollider.getHitOpponentForEnemyBullet(collider_) != MyCollider.Type.None)
            {
                Vector3 intersect_point;
                MyCollider.getIntersectPointForEnemyBullet(collider_, out intersect_point);
                Spark.Instance.spawn(ref intersect_point, Spark.Type.EnemyBullet, update_time);
                destroy();
                return;
            }
            if (rigidbody_.transform_.position_.y < 0f)
            {
                WaterSurface.Instance.makeBump(ref rigidbody_.transform_.position_, 0.5f /* value */, 0.5f /* size */);
                destroy();
                var pos = new Vector3(rigidbody_.transform_.position_.x, -0.5f, rigidbody_.transform_.position_.z);
                for (var i = 0; i < 4; ++i)
                {
                    var spread = 2f;
                    var vel    = new Vector3(Mathf.Cos(i * Mathf.PI * (2f / 8f)) * spread,
                                             MyRandom.Range(5f, 7f),
                                             Mathf.Sin(i * Mathf.PI * (2f / 8f)) * spread);
                    WaterSplash.Instance.spawn(ref pos, ref vel, update_time);
                }
                return;
            }

            rigidbody_.update(dt);
            MyCollider.updateEnemyBullet(collider_, ref rigidbody_.transform_.position_);

            if (update_time - start_ > MyRandom.Range(2f, 2.5f))       // 寿命
            {
                destroy();
                return;
            }
        }