Advertisement
Guest User

Untitled

a guest
Jul 16th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.58 KB | None | 0 0
  1. ParticleAnimations particleAnimation = GetNexParticleAnimations();
  2.  
  3.                     float spriteDirection = Mathf.Sign(m_Character.Sprite.transform.localScale.x);
  4.                     float yInverse = Mathf.Sign(m_Character.transform.localScale.y);
  5.  
  6.                     Vector3 localScale = particleAnim.LocalScale;
  7.                     localScale.x *= spriteDirection;
  8.                     localScale.y *= yInverse;
  9.                     localScale *= Mathf.Max(0.1f, 1f + particleAnim.RandomScaleRange * (Random.value * 2f - 1f));
  10.  
  11.                     Vector3 offset = particleAnim.AnimationOffset;
  12.                     offset.y *= yInverse;
  13.                     offset.x *= spriteDirection;
  14.  
  15.                     Vector3 position = transform.position;
  16.                     Quaternion rotation = Quaternion.identity;
  17.                     Transform animationParent = null;
  18.  
  19.                     if(particleAnim.SpawnAtGround)
  20.                     {
  21.                         CustomEdgeCollider ground = m_Character.Controller.LastValidCustomGroundObject;
  22.                         CustomEdgeCollider.EdgeInformation? edgeInfo = m_Character.Controller.LastValidGroundEdgeInformartion;
  23.  
  24.                         if (particleAnim.Orientation == CharacterAnimationParticlesSettings.OrientationType.Ground)
  25.                         {
  26.                             float angle = Utils.CalculateSlopeFromNormal(edgeInfo.Value.Normal, m_Character.Controller.State.Up);
  27.                             rotation = Quaternion.AngleAxis(angle, Vector3.forward);
  28.                         }
  29.  
  30.                         if (ground != null && edgeInfo.HasValue)
  31.                         {
  32.                             if(particleAnim.Orientation == CharacterAnimationParticlesSettings.OrientationType.MainCharacterVelocity)
  33.                             {
  34.                                 float angle = Utils.CalculateSlopeFromNormal(m_Character.Controller.Velocity.normalized, m_Character.Controller.State.Up);
  35.                                 rotation = Quaternion.AngleAxis(angle, Vector3.forward);
  36.                             }
  37.                             position += rotation * offset;
  38.                             position = ground.GetClosestPointOnEdge(position, m_Character.Controller.LastValidGroundEdgeIndex);
  39.  
  40.                             animationParent = ground.transform;
  41.                         }
  42.                         else
  43.                         {
  44.                             position += rotation * offset;
  45.                         }
  46.                     }
  47.  
  48.                     // Front
  49.                     SpriteRenderer frontSpriteRenderer = particleAnimation.FrontSprite;
  50.                     frontSpriteRenderer.color = particleSet.CurrentColor;
  51.                     frontSpriteRenderer.transform.position = position;
  52.                     frontSpriteRenderer.transform.rotation = rotation;
  53.                     frontSpriteRenderer.transform.localScale = localScale;
  54.  
  55.                     // Back
  56.                     SpriteRenderer backSpriteRenderer = particleAnimation.BackSprite;
  57.                     if(particleAnim.HasTwoFaces)
  58.                     {
  59.                         backSpriteRenderer.enabled = true;
  60.                         backSpriteRenderer.color = particleSet.CurrentBackColor;
  61.                     }
  62.                     else
  63.                     {
  64.                         backSpriteRenderer.enabled = false;
  65.                     }
  66.  
  67.                     particleAnimation.StartAnimation(particleAnim.GetAnimationId(), animationParent, particleAnim.Orientation == CharacterAnimationParticlesSettings.OrientationType.Ground);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement