Exemple #1
0
        /// <summary>
        /// Draws the an arc in world space from startPosition to endPosition, using the indicated color.
        /// </summary>
        /// <param name="startPosition">Start position.</param>
        /// <param name="endPosition">End position.</param>
        /// <param name="drawColor">Draw color.</param>
        public static void DrawArc(Vector3 startPosition, Vector3 endPosition, Color drawColor)
        {
            ParticleSystem pSystem = getParticleSystem();

            float arcHeight    = 3;     //	meters (local constant)
            float segLength    = .1f;   //	meters (local constant)
            float particleSize = .3f;
            float particleLife = .2f;
            float speed        = .1f;

            float   distance        = Vector3.Distance(startPosition, endPosition);
            float   vertDistance    = endPosition.y - startPosition.y;
            Vector3 planarDirection = endPosition - startPosition;

            planarDirection.Scale(Vector3.right + Vector3.forward);
            planarDirection.Normalize();
            int numSegments = (int)Mathf.Clamp(distance / segLength, 1, 360);

            pSystem.Emit(startPosition, PRand.RandomVector3() * speed, particleSize, particleLife, drawColor);

            for (int i = 1; i < numSegments - 1; i++)
            {
                float   verticalPosition = arcHeight * Mathf.Sin(Mathf.PI * i / numSegments);
                Vector3 pointPosition    = planarDirection * i * segLength;
                pointPosition.y = verticalPosition + i * vertDistance / numSegments;
                pSystem.Emit(startPosition + pointPosition, PRand.RandomVector3() * speed, particleSize, particleLife, drawColor);
            }
            pSystem.Emit(endPosition, PRand.RandomVector3() * speed, particleSize, particleLife, drawColor);
        }
Exemple #2
0
 /// <summary>
 /// Returns a color with adjusted saturation. Equal chance to saturate or desaturate.
 /// </summary>
 /// <returns>A color.</returns>
 /// <param name="color">The source Color.</param>
 /// <param name="saturationVariance">Saturation variance.</param>
 public static Color RandomSaturation(Color color, float saturationVariance)
 {
     if (PRand.RandomBool())
     {
         return(Palette.Desaturate(color, 0.5f * saturationVariance * Random.value));
     }
     else
     {
         return(Palette.Saturate(color, 0.5f * saturationVariance * Random.value));
     }
 }