private static void Cone3DRandom( Transform source, List <Transform> results, int count, float spreadH, float spreadV) { if (!PrepareTransformList(source, results, count)) { return; } Vector3 origin = source.origin; Vector3 forward = -source.basis.z; Vector3 up = source.basis.y; Vector3 right = source.basis.x; // always shoot one dead centre. results[0] = source; for (int i = 1; i < count; ++i) { float rSpreadH = ZqfGodotUtils.RandomRange(-spreadH, spreadH); float rSpreadV = ZqfGodotUtils.RandomRange(-spreadV, spreadV); Vector3 end = ZqfGodotUtils.VectorMA(origin, 8192, forward); end = ZqfGodotUtils.VectorMA(end, rSpreadH, right); end = ZqfGodotUtils.VectorMA(end, rSpreadV, up); results[i] = source.LookingAt(end, Vector3.Up); //results[i].SetLookAt(source.origin, end, Vector3.Up); } }
public void LaunchUp() { AddCentralForce(new Vector3(0, ZqfGodotUtils.RandomRange(30, 50), 0)); AngularVelocity = new Vector3( ZqfGodotUtils.RandomRange(-15, 15), ZqfGodotUtils.RandomRange(-5, 5), ZqfGodotUtils.RandomRange(-15, 15)); }