public void EnablePickUpRays(ref Transform p_pickUpTrans) { float directionX = m_colInfo.FaceDir; Vector2 rayOrigin = (directionX == -1) ? m_raycastOrigins.BottomLeft : m_raycastOrigins.BottomRight; rayOrigin += Vector2.up * m_skinBounds.size.y * 0.75f; RaycastHit2D hit = Physics2D.Raycast(rayOrigin, Vector2.right * directionX, m_interactableRayLength, m_interactableMask); Debug.DrawRay(rayOrigin, Vector2.right * directionX, Color.green); if (hit) { if (hit.collider.tag == "Enemy") { EnemyPlatformerBehavior hitBehavior = hit.collider.GetComponent <EnemyPlatformerBehavior>(); if (hitBehavior != null) { hitBehavior.enabled = false; } p_pickUpTrans = hit.collider.transform; p_pickUpTrans.SetParent(transform); p_pickUpTrans.localPosition = new Vector3(0.28f, m_skinBounds.size.y + 0.7f, 0.0f); p_pickUpTrans.localScale = Vector3.one; hit.collider.enabled = false; } } }
public void SpawnFromPool() { EnemyPlatformerBehavior enemy = m_enemyPool.Where(ep => !ep.gameObject.activeSelf).FirstOrDefault(); if (enemy != null) { enemy.ToggleCharacter(true, new Vector2(10.0f, -3.76f)); } }
public void PickThrow() { if (m_pickedUpTrans != null) { EnemyPlatformerBehavior hitBehavior = m_pickedUpTrans.GetComponent <EnemyPlatformerBehavior>(); if (hitBehavior != null) { hitBehavior.enabled = true; } m_pickedUpTrans.SetParent(null); hitBehavior.GetThrown(m_velocity.x + (5.0f * m_raycastCol.ColInfo.FaceDir), 5.0f); m_pickedUpSpriteRend.sortingLayerName = "NPC"; m_pickedUpSpriteRend.sortingOrder = 0; BoxCollider2D col = m_pickedUpTrans.GetComponent <BoxCollider2D>(); GameflowManager.instance.DelayAction(() => { col.enabled = true; }, 0.3f); m_pickedUpSpriteRend = null; m_pickedUpTrans = null; } else { m_playerRaycastCol.EnablePickUpRays(ref m_pickedUpTrans); if (m_pickedUpTrans != null) { m_pickedUpSpriteRend = m_pickedUpTrans.GetComponent <SpriteRenderer>(); m_pickedUpSpriteRend.sortingLayerName = "Player"; m_pickedUpSpriteRend.sortingOrder = 10; } } m_anim.SetBool("bIsPickingUp", m_pickedUpTrans != null); }