Esempio n. 1
0
        /// <summary>
        /// Cambia las direcciones y las velocidades entre los botes que colisionan.
        /// </summary>
        /// <param name="collided"></param>
        /// <param name="contact"></param>
        public void CalculateImpactForces(Transform collided, ContactPoint contact)
        {
            // if(!calculating)
            //{
            Debug.Log(calculating);
            calculating = true;
            Kratos9.movement_manager collided_movement_manager       = collided.GetComponent <Kratos9.movement_manager>();
            Kratos9.movement_manager other_collider_movement_manager = contact.otherCollider.transform.GetComponent <Kratos9.movement_manager>();
            Kratos9.punch_manager    collided_punch_manager          = collided.GetComponent <Kratos9.punch_manager>();
            Kratos9.punch_manager    other_collider_punch_manager    = contact.otherCollider.transform.GetComponent <Kratos9.punch_manager>();


            collided_movement_manager.my_anim.SetTrigger("Hit");
            other_collider_movement_manager.my_anim.SetTrigger("Hit");
            Vector3 normal = new Vector3(contact.normal.x, 0, contact.normal.z);

            Debug.Log(contact.normal);

            if (!collided_movement_manager.hitting)
            {
                if (!other_collider_movement_manager.hitting)
                {
                    collided_movement_manager.RecieveImpact(normal * (other_collider_movement_manager.GetDirectorVector().magnitude + collided_movement_manager.GetDirectorVector().magnitude * 0.5f));     //* ((collided_movement_manager.GetDirectorVector() * collided_movement_manager.GetSpeed()).magnitude + (other_collider_movement_manager.GetDirectorVector() * other_collider_movement_manager.GetSpeed()).magnitude));
                                                                                                                                                                                                            //collided_movement_manager.RecieveImpact(other_collider_movement_manager.GetDirectorVector() * other_collider_movement_manager.GetSpeed() - collided_movement_manager.GetDirectorVector() * collided_movement_manager.GetSpeed());
                                                                                                                                                                                                            //other_collider_movement_manager.RecieveImpact(collided_movement_manager.GetDirectorVector() * collided_movement_manager.GetSpeed() - other_collider_movement_manager.GetDirectorVector() * other_collider_movement_manager.GetSpeed());
                    other_collider_movement_manager.RecieveImpact(-normal * (other_collider_movement_manager.GetDirectorVector().magnitude * 0.5f + collided_movement_manager.GetDirectorVector().magnitude));

                    if (collided_movement_manager.GetDirectorVector().magnitude > other_collider_movement_manager.GetDirectorVector().magnitude&& !other_collider_punch_manager.punch_ready)
                    {
                        other_collider_punch_manager.IncreasePunchCharge(1);

                        if (other_collider_punch_manager.punch_charge >= other_collider_punch_manager.punch_charge_needed)
                        {
                            other_collider_punch_manager.punch_ready = true;
                        }
                    }
                    else if (collided_movement_manager.GetDirectorVector().magnitude < other_collider_movement_manager.GetDirectorVector().magnitude&& !collided_punch_manager.punch_ready)
                    {
                        collided_punch_manager.IncreasePunchCharge(1);

                        if (collided_punch_manager.punch_charge >= collided_punch_manager.punch_charge_needed)
                        {
                            collided_punch_manager.punch_ready = true;
                        }
                    }
                }
                else
                {
                    collided_movement_manager.RecieveImpact(normal * (collided_movement_manager.GetDirectorVector().magnitude *0.5f + other_collider_movement_manager.dash_speed));
                    other_collider_movement_manager.GetComponent <Kratos9.punch_manager>().StopPunchEffect();
                }
            }
            else
            {
                collided_movement_manager.GetComponent <Kratos9.punch_manager>().StopPunchEffect();

                if (!other_collider_movement_manager.hitting)
                {
                    other_collider_movement_manager.RecieveImpact(-normal * (collided_movement_manager.dash_speed + other_collider_movement_manager.GetDirectorVector().magnitude * 0.5f));
                }
                else
                {
                    other_collider_movement_manager.GetComponent <Kratos9.punch_manager>().StopPunchEffect();
                }
            }


            //  }
        }
Esempio n. 2
0
 private void Start()
 {
     this_movement_manager = transform.GetComponent <movement_manager>();
 }