Esempio n. 1
0
        private void UpdatePosition()
        {
            target_pos = transform.position;
            float target_angle = 0f;

            target_rotation = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, target_angle);

            if (bearer)
            {
                PlatformerCharacter player = bearer.GetComponent <PlatformerCharacter>();
                Vector3             motion = player.GetMove();
                if (bearer.GetComponent <PlatformerCharacter>())
                {
                    if (motion.magnitude > 0.1f)
                    {
                        last_motion = motion;
                    }
                }

                //Update position of the item
                flipX = player.GetSide();
                GameObject hand = bearer.hold_hand;
                target_pos = hand.transform.position + hand.transform.up * carry_offset.y + hand.transform.right * carry_offset.x * flipX;
                Vector3 rot_vector_forw = Quaternion.Euler(0f, 0f, carry_angle_deg * flipX) * hand.transform.forward;
                Vector3 rot_vector_up   = Quaternion.Euler(0f, 0f, carry_angle_deg * flipX) * hand.transform.up;
                target_rotation = Quaternion.LookRotation(rot_vector_forw, rot_vector_up);
            }

            //Move the object
            transform.position = target_pos;
            transform.rotation = target_rotation;

            //Flip
            transform.localScale = bearer || throwing ? start_size * carry_size : start_size;
            transform.localScale = new Vector3(Mathf.Abs(transform.localScale.x) * flipX, transform.localScale.y, transform.localScale.z);
        }
Esempio n. 2
0
        public void Take(PlatformerCharacter bearer)
        {
            this.bearer       = bearer;
            last_bearer       = bearer;
            collide.isTrigger = true;

            sprite_render.sortingLayerID = bearer.GetComponent <SpriteRenderer>().sortingLayerID;
            transform.localScale         = start_size * carry_size;

            if (OnTake != null)
            {
                OnTake.Invoke(bearer.gameObject);
            }

            UpdateCarryItem();
        }