Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ParticleAnimations particleAnimation = GetNexParticleAnimations();
- float spriteDirection = Mathf.Sign(m_Character.Sprite.transform.localScale.x);
- float yInverse = Mathf.Sign(m_Character.transform.localScale.y);
- Vector3 localScale = particleAnim.LocalScale;
- localScale.x *= spriteDirection;
- localScale.y *= yInverse;
- localScale *= Mathf.Max(0.1f, 1f + particleAnim.RandomScaleRange * (Random.value * 2f - 1f));
- Vector3 offset = particleAnim.AnimationOffset;
- offset.y *= yInverse;
- offset.x *= spriteDirection;
- Vector3 position = transform.position;
- Quaternion rotation = Quaternion.identity;
- Transform animationParent = null;
- if(particleAnim.SpawnAtGround)
- {
- CustomEdgeCollider ground = m_Character.Controller.LastValidCustomGroundObject;
- CustomEdgeCollider.EdgeInformation? edgeInfo = m_Character.Controller.LastValidGroundEdgeInformartion;
- if (particleAnim.Orientation == CharacterAnimationParticlesSettings.OrientationType.Ground)
- {
- float angle = Utils.CalculateSlopeFromNormal(edgeInfo.Value.Normal, m_Character.Controller.State.Up);
- rotation = Quaternion.AngleAxis(angle, Vector3.forward);
- }
- if (ground != null && edgeInfo.HasValue)
- {
- if(particleAnim.Orientation == CharacterAnimationParticlesSettings.OrientationType.MainCharacterVelocity)
- {
- float angle = Utils.CalculateSlopeFromNormal(m_Character.Controller.Velocity.normalized, m_Character.Controller.State.Up);
- rotation = Quaternion.AngleAxis(angle, Vector3.forward);
- }
- position += rotation * offset;
- position = ground.GetClosestPointOnEdge(position, m_Character.Controller.LastValidGroundEdgeIndex);
- animationParent = ground.transform;
- }
- else
- {
- position += rotation * offset;
- }
- }
- // Front
- SpriteRenderer frontSpriteRenderer = particleAnimation.FrontSprite;
- frontSpriteRenderer.color = particleSet.CurrentColor;
- frontSpriteRenderer.transform.position = position;
- frontSpriteRenderer.transform.rotation = rotation;
- frontSpriteRenderer.transform.localScale = localScale;
- // Back
- SpriteRenderer backSpriteRenderer = particleAnimation.BackSprite;
- if(particleAnim.HasTwoFaces)
- {
- backSpriteRenderer.enabled = true;
- backSpriteRenderer.color = particleSet.CurrentBackColor;
- }
- else
- {
- backSpriteRenderer.enabled = false;
- }
- particleAnimation.StartAnimation(particleAnim.GetAnimationId(), animationParent, particleAnim.Orientation == CharacterAnimationParticlesSettings.OrientationType.Ground);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement