public static void SpawnParticle(ParticleType _type, Vector3 pos, int direction = 1)
    {
        SpriteSheetParticleController particle = GetController(_type).GetParticle();

        particle.Activate(pos);
        particle.transform.localScale = new Vector3(direction * Mathf.Abs(particle.transform.localScale.x), particle.transform.localScale.y, particle.transform.localScale.z);
    }
Example #2
0
    void HandleJumping()
    {
        if (IsGrounded && input.JumpDown && !IsJumping)
        {
            velocity.y    = jupmForce;
            jupmTimeCount = jumpTime;

            RaycastHit2D hit = Physics2D.Raycast((Vector2)transform.position, Vector2.down, 2f, groundLayer);
            SpriteSheetParticleController.SpawnParticle(ParticleType.Jump, (Vector3)hit.point);
        }
        else if (IsWallGripping && input.JumpDown && !IsJumping)
        {
            LooseGrip();
            velocity.x         = -grippingDirection * maxSpeed * wallJumpSpeed;
            velocity.y         = jupmForce * wallJumpForce;
            jupmTimeCount      = jumpTime;
            keepDirectionCount = wallJumpTime;
            keepDirection      = -grippingDirection;

            RaycastHit2D hit = Physics2D.Raycast((Vector2)transform.position, grippingDirection == 1? Vector2.right: Vector2.left, 2f, groundLayer);
            SpriteSheetParticleController.SpawnParticle(ParticleType.WallJump, (Vector3)hit.point, keepDirection);
        }
        else if (input.Jump && IsJumping)
        {
            if (jupmTimeCount > 0)
            {
                jupmTimeCount -= Time.deltaTime;
                velocity.y     = jupmForce;
            }
        }
        else if (input.JumpUp && IsJumping)
        {
            jupmTimeCount = 0;
        }
    }
 public SpriteSheetParticleController GetParticle()
 {
     if (instantiated.Count > 0)
     {
         SpriteSheetParticleController particle = instantiated[0];
         instantiated.RemoveAt(0);
         return(particle);
     }
     else
     {
         SpriteSheetParticleController particle = Instantiate(prefab).GetComponent <SpriteSheetParticleController>();
         particle.Set(type);
         return(particle);
     }
 }
 public void PutBack(SpriteSheetParticleController particle)
 {
     instantiated.Add(particle);
 }
 void ParticleEnd()
 {
     gameObject.SetActive(false);
     SpriteSheetParticleController.PutBack(this);
 }
 private static void PutBack(SpriteSheetParticleController particle)
 {
     GetController(particle.type).PutBack(particle);
 }