public void Fire(Vector3 dest, XBulletProperty prop, Transform[] targets, System.Func <XBulletComponent, Transform, bool> callback) { destPos_ = dest; property = prop; hitTargets = targets; hitCallback_ = callback; Init(); }
private static void FireBullet(GameObject go, Vector3 dest, XBulletProperty property, System.Func <XBulletComponent, Transform, bool> callback, Transform[] hitTargets) { XBulletComponent bullet = go.GetComponent <XBulletComponent>(); if (bullet != null) { bullet.Fire(dest, property, hitTargets, callback); } else { GameObject.Destroy(go); } }
public static void GenerateBulletAsync(bool isPvp, string path, Vector3 position, Vector3 dest, XBulletProperty property, System.Func <XBulletComponent, Transform, bool> callback, Transform[] hitTargets) { GenerateBulletAsync(isPvp, path, position, dest, property, callback, hitTargets, null); }
public static void GenerateBulletAsync(bool isPvp, string path, Vector3 position, Vector3 dest, XBulletProperty property, System.Func <XBulletComponent, Transform, bool> callback, Transform[] hitTargets, System.Action <XBulletComponent> loadDone) { XCoroutine.Run(Instance.GetBullet(path, delegate(XBulletComponent bullet) { if (bullet != null) { bullet.transform.position = position; bullet.transform.rotation = Quaternion.identity; if (position.x >= dest.x) { bullet.transform.localEulerAngles = new Vector3(0, 180, 0); } if (isPvp) { property.time = Mathf.RoundToInt(Vector3.Distance(position, dest) / property.speed * 1000) * 0.001f; } bullet.Fire(dest, property, hitTargets, callback); } if (loadDone != null) { loadDone(bullet); } })); }