void setTime(string groupName, float randomVariation) { GameObject[] grassGroup = GameObject.FindGameObjectsWithTag(groupName); List <GameObject> sortedGroup = new List <GameObject>(grassGroup); sortedGroup.Sort((x, y) => y.transform.position.x.CompareTo(x.transform.position.x)); int groupSize = sortedGroup.Count; float change = 1.0f / groupSize; int count = 0; foreach (GameObject grass in sortedGroup) { AnimationStart grassScript = grass.GetComponent <AnimationStart>(); grassScript.startTime = Mathf.Repeat(change * count + Random.Range(-change * randomVariation, change * randomVariation), 1); count++; } }
private void Start() { instance = this; animation = GetComponent <Animation>(); animation.wrapMode = WrapMode.Once; }
/// <summary> /// Ejecuta una serie de acciones /// </summary> internal void Execute(TimeLineModel timeLine) { // Crea el storyboard de las animaciones if (sbStoryBoard == null) { // Crea el storyBoard sbStoryBoard = new Storyboard(); // Asigna el evento de fin de animación sbStoryBoard.Completed += (sender, evntArgs) => AnimationEnd?.Invoke(this, EventArgs.Empty); } // Limpia el storyBoard sbStoryBoard.Children.Clear(); // Asigna las propiedades de duración sbStoryBoard.BeginTime = TimeSpan.FromSeconds(timeLine.Parameters.Start); sbStoryBoard.Duration = new Duration(TimeSpan.FromSeconds(timeLine.Parameters.Duration)); // Recorre las acciones añadiéndolas al storyboard foreach (ActionBaseModel action in timeLine.Actions) { if (action != null) { FrameworkElement control = PageView.GetPageControl(action.TargetKey); // Ejecuta la acción if (control != null) // && control.RenderTransform is TransformGroup) { if (action is SetVisibilityActionModel) { ExecuteVisibility(control, action as SetVisibilityActionModel); } else if (action is ResizeActionModel) { ExecuteResize(timeLine, control, action as ResizeActionModel); } else if (action is RotateActionModel) { ExecuteRotation(control, action as RotateActionModel); } else if (action is ZoomActionModel) { ExecuteZoom(control, action as ZoomActionModel); } else if (action is TranslateActionModel) { ExecuteTranslate(control, action as TranslateActionModel); } else if (action is PathActionModel) { ExecutePathAnimation(control, action as PathActionModel); } else if (action is SetZIndexModel) { ExecuteZIndexAnimation(control, action as SetZIndexModel); } else if (action is BrushViewBoxActionModel) { ExecuteViewBoxAnimation(control, action as BrushViewBoxActionModel); } else if (action is BrushRadialActionModel) { ExecuteBrushRadial(control, action as BrushRadialActionModel); } else if (action is BrushLinearActionModel) { ExecuteBrushLinear(control, action as BrushLinearActionModel); } } } } // Inicia la animación if (sbStoryBoard.Children.Count > 0) { // Lanza el evento de inicio de animación AnimationStart?.Invoke(this, EventArgs.Empty); // Arranca la animación sbStoryBoard.Begin(); } }