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; } }