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); }
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); }