コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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));
        }