public void Drop() { last_bearer = this.bearer; this.bearer = null; collide.isTrigger = throwing ? false : trigger_at_start; take_timer = -0.01f; //Reset sorting order/layer sprite_render.sortingOrder = start_order; sprite_render.sortingLayerID = start_layer; if (last_bearer && !throwing) { //Reset straight floor position transform.position = new Vector3(last_bearer.transform.position.x, last_bearer.transform.position.y, initial_pos.z); transform.localScale = start_size; transform.rotation = start_rot; flipX = 1f; } //Reset auto sort/rotate auto_sort.auto_sort = start_auto_order; auto_sort.RefreshAutoRotate(); auto_sort.RefreshSort(); if (OnDrop != null) { OnDrop.Invoke(last_bearer.gameObject); } }
private void AdaptOrderInLayer() { auto_sort.RefreshSort(); if (bearer) { if (!rotate_item) { CharacterHoldItem char_bearer = bearer.GetComponent <CharacterHoldItem>(); int offset = char_bearer.GetCharacter().GetSide() == 0 ? 5 : -5; sprite_render.sortingOrder = char_bearer.GetCharacter().GetSortOrder() + offset; } } }
public void Take(CharacterHoldItem bearer) { this.bearer = bearer; last_bearer = bearer; collide.isTrigger = true; sprite_render.sortingLayerID = bearer.GetComponent <SpriteRenderer>().sortingLayerID; auto_sort.auto_sort = false; //Will be sorted based on character instead transform.localScale = start_size * carry_size; if (OnTake != null) { OnTake.Invoke(bearer.gameObject); } UpdateCarryItem(); }
public bool CanTake(GameObject taker) { CharacterHoldItem player = taker.GetComponent <CharacterHoldItem>(); CarryItem current_item = player.GetHeldItem(); if (current_item != null && item_type == current_item.item_type) { return(false); } if (take_timer >= -0.01f) { //Avoid taking back an item you just threw return(!throwing || last_bearer != taker); } return(false); }
void Awake() { character = GetComponent <PlayerCharacter>(); character_item = GetComponent <CharacterHoldItem>(); animator = GetComponent <Animator>(); }