void Update() { if (_state == 0) { Loop("Idle", spriteRenderer); var closest = _GetClosest(); if (closest && Vector3.Distance(closest.transform.position, transform.position) < armedDistance) { _state = 1; } } else if (_state == 1) { var playing = Once("Armed", spriteRenderer); if (playing == 0) { EmitterGroup.Play("Explosion 1", transform.position, 1, spriteRenderer.sortingOrder); _Shrapnel(); Destroy(gameObject); } } }
/// <summary> /// Creates an emitter and assigns it to the specified originating time consistency check group such /// that all streams in any given group will contain post messages with strictly monotonically increasing /// originating times. /// </summary> /// <typeparam name="T">The type of the output stream.</typeparam> /// <param name="pipeline">The pipeline in which this component was created.</param> /// <param name="name">The name of the stream.</param> /// <param name="consistencyCheckGroup">The group in which to create the stream.</param> /// <returns>The newly created emitter for the stream.</returns> private Emitter <T> CreateEmitterInGroup <T>(Pipeline pipeline, string name, EmitterGroup consistencyCheckGroup) { var emitter = pipeline.CreateEmitter <T>(this, name); this.originatingTimeConsistencyCheckGroup[emitter] = consistencyCheckGroup; return(emitter); }
public override void OnCollision(SpriteColliderBase collider) { if (collider.name == "Pickup Shield") { AddShield(); collider.Destroy(); } else if (collider.name == "Pickup Bullets") { frontCannon.count += upgradeSettings.frontCannon; collider.Destroy(); } else if (collider.name == "Pickup Phaser" && phaser) { phaser.count += upgradeSettings.phaser; collider.Destroy(); } else if (collider.name == "Pickup Laser" && laser) { laser.timer.count += upgradeSettings.laser; collider.Destroy(); } else if (collider.name == "Pickup Nuke") { Nukeable.Nuke(); EmitterGroup.Play("Nuke", default); collider.Destroy(); } }
private void RefreshGroups() { if (Groups == null || Groups.Length != GroupCount) { Groups = new EmitterGroup[GroupCount]; Vector2 direction = Direction; float rotation = 0; for (int n = 0; n < Groups.Length; n++) { Groups[n] = new EmitterGroup(Rotate(direction, rotation).normalized, SpokeCount, SpokeSpacing); rotation += 360 / Groups.Length; } } }
public override void UpdateEmitterGroup(GameTime time, EmitterGroup group) { MouseState state = Mouse.GetState(); group.Position.X = (float)state.X; group.Position.Y = (float)state.Y; if (_click) { if (state.LeftButton == ButtonState.Pressed) { group.Trigger(); } } }
private void RefreshGroups() { if (GroupCount > 10) { Debug.Log("Max Group Count is set to 10. You attempted to set it to " + GroupCount.ToString() + "."); return; } if (Groups == null || LastGroupCountPoll != GroupCount) { float rotation = 0; for (int n = 0; n < Groups.Length; n++) { if (n < GroupCount && Groups[n] == null) { Groups[n] = new EmitterGroup(Rotate(Direction, rotation).normalized, SpokeCount, SpokeSpacing); } else if (n < GroupCount) { Groups[n].Direction = Rotate(Direction, rotation).normalized; Groups[n].SpokeCount = SpokeCount; Groups[n].SpokeSpacing = SpokeSpacing; } else { //n is greater than GroupCount -- ensure we clear the rest of the buffer Groups[n] = null; } rotation += 360 / GroupCount; } LastGroupCountPoll = GroupCount; } else if (RotationSpeed == 0) { float rotation = 0; // If rotation speed is locked, then allow to update Direction of groups for (int n = 0; n < Groups.Length; n++) { if (Groups[n] != null) { Groups[n].Direction = Rotate(Direction, rotation).normalized; } rotation += 360 / GroupCount; } } }
public void Play(CollisionData a, CollisionData b) { if (a == null) { return; } var group = EmitterGroup.Get(emitterGroupId); if (group == null) { return; } var scale = emitterGroupScale; var layer = layerSettings.value; var position = a.transform.position; if (group.size > 0) { scale *= Mathf.Max(a.spriteRenderer.sprite.rect.size.x, a.spriteRenderer.sprite.rect.size.y) / group.size; } scale *= Mathf.Max(a.transform.localScale.x, a.transform.localScale.y); if (layerSettings.mode == LayerSettings.Mode.inherit) { layer += a.spriteRenderer.sortingOrder; } else if (layerSettings.mode == LayerSettings.Mode.target && b && b.spriteRenderer) { layer += b.spriteRenderer.sortingOrder; } group.Play(position, scale, layer); }
void Update() { EmitterGroup.Play(emitterGroupId, transform.position, emitterGroupSize, orderInLayer); }
//======================================================[ Constructors & Methods ] public virtual void UpdateEmitterGroup(GameTime time, EmitterGroup group) { }