Esempio n. 1
0
 void OnCollisionExit2D(Collision2D collision)
 {
     if (collision.collider.gameObject.layer == LayerMask.NameToLayer("Platforms"))
     {
         maxSpeedAir    = 20;
         maxSpeedGround = 20;
         // jumpAvailable = false;
         // isGrounded = false;
         //Debug.Log(isGrounded+" -- " +collision.collider.name);
         if (this.gameObject.activeSelf)
         {
             this.transform.SetParent(null);
         }
     }
     if (collision.collider.gameObject.tag == "MovingPlatform")
     {
         FrictionJoint2D rb2d = collision.gameObject.GetComponent <FrictionJoint2D>();
         rb2d.connectedBody = null;
     }
     if (collision.collider.gameObject.tag == "SmallPlatform")
     {
         FrictionJoint2D rb2d = collision.gameObject.GetComponent <FrictionJoint2D>();
         rb2d.connectedBody = null;
     }
     if (collision.collider.gameObject.tag == "Spring")
     {
         // isGrounded = false;
         maxSpeedAir    = 20;
         maxSpeedGround = 20;
     }
 }
Esempio n. 2
0
 private void Awake()
 {
     _controller                  = GetComponent <CharacterController>();
     _rb                          = GetComponent <Rigidbody2D>();
     _minHangDistance             = GameManager.Instance.minHangDistance;
     _maxHangDistance             = GameManager.Instance.maxHangDistance;
     _joint                       = GetComponent <DistanceJoint2D>();
     _friction                    = GetComponent <FrictionJoint2D>();
     _joint.autoConfigureDistance = false;
     _joint.enabled               = false;
     _friction.enabled            = false;
     _friction.enableCollision    = true;
     _maxSelectDistance           = GameManager.Instance.maxStarSelectDistance;
     enabled                      = GameManager.Instance.ShouldEnableGrappler();
 }
Esempio n. 3
0
    public static int get_maxTorque(IntPtr l)
    {
        int result;

        try
        {
            FrictionJoint2D frictionJoint2D = (FrictionJoint2D)LuaObject.checkSelf(l);
            LuaObject.pushValue(l, true);
            LuaObject.pushValue(l, frictionJoint2D.maxTorque);
            result = 2;
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }
Esempio n. 4
0
    private void Update()
    {
        if (excellent && DontIceCream)
        {
            rb.velocity         = Vector2.zero;
            coll.sharedMaterial = ExMaterial;

            gameObject.AddComponent <FrictionJoint2D>();
            FrictionJoint2D frictionJoint = GetComponent <FrictionJoint2D>();
            frictionJoint.connectedBody   = LastBall.GetComponent <Rigidbody2D>();
            frictionJoint.maxTorque       = 200;
            frictionJoint.breakForce      = 3;
            frictionJoint.enableCollision = true;

            Excellent.transform.position = gameObject.transform.position - new Vector3(0.0f, 0.0538f, 0.0f);

            DontIceCream = false;
        }
    }
Esempio n. 5
0
    public static int set_maxForce(IntPtr l)
    {
        int result;

        try
        {
            FrictionJoint2D frictionJoint2D = (FrictionJoint2D)LuaObject.checkSelf(l);
            float           maxForce;
            LuaObject.checkType(l, 2, out maxForce);
            frictionJoint2D.maxForce = maxForce;
            LuaObject.pushValue(l, true);
            result = 1;
        }
        catch (Exception e)
        {
            result = LuaObject.error(l, e);
        }
        return(result);
    }
Esempio n. 6
0
    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.collider.gameObject.layer == LayerMask.NameToLayer("Platforms"))
        {
            this.transform.SetParent(collision.transform);
            numberOfBounces = 1;
            if (playHitSound)
            {
                audioS.PlayOneShot(groundSound, 1F);
                playHitSound = false;
            }
        }
        if (collision.collider.gameObject.layer == LayerMask.NameToLayer("FallingPlatforms"))
        {
            numberOfBounces = 1;
            if (playHitSound)
            {
                audioS.PlayOneShot(groundSound, 1F);
                playHitSound = false;
            }
        }

        if (collision.collider.gameObject.tag == "FastPlatform")
        {
            maxSpeedAir    = 100;
            maxSpeedGround = 100;
            rb.AddForce(Vector2.right * hAxis * moveSpeed * 10f, ForceMode2D.Impulse);
            numberOfBounces = 1;

            if (playHitSound)
            {
                audioS.PlayOneShot(impulseSound, 1F);
                playHitSound = false;
            }
        }
        if (collision.collider.gameObject.tag == "FastPlatformx2")
        {
            rb.AddForce(Vector2.right * moveSpeed * 8f, ForceMode2D.Impulse);
            numberOfBounces = 1;
            if (playHitSound)
            {
                audioS.PlayOneShot(impulseSound, 1F);
                playHitSound = false;
            }
        }
        if (collision.collider.gameObject.tag == "MovingPlatform")
        {
            FrictionJoint2D rb2d = collision.gameObject.GetComponent <FrictionJoint2D>();
            numberOfBounces    = 1;
            rb2d.connectedBody = rb;
            collision.gameObject.GetComponent <PlatformMove>().activate = true;
            if (playHitSound)
            {
                audioS.PlayOneShot(groundSound, 1F);
                playHitSound = false;
            }
        }
        if (collision.collider.gameObject.tag == "SmallPlatform")
        {
            FrictionJoint2D rb2d = collision.gameObject.GetComponent <FrictionJoint2D>();
            numberOfBounces    = 1;
            rb2d.connectedBody = rb;
            if (playHitSound)
            {
                audioS.PlayOneShot(groundSound, 1F);
                playHitSound = false;
            }
        }
        if (collision.gameObject.CompareTag("Spring"))
        {
            audioS.PlayOneShot(springSound, 1F);
            colAngle = Vector2.Angle(-collision.contacts[0].normal, new Vector2(collision.transform.up.x, collision.transform.up.y));
            if (colAngle > 120)
            {
                numberOfBounces += 0.1f;
                rb.AddForce((transform.up * 35) * numberOfBounces, ForceMode2D.Impulse);
            }
        }
    }
Esempio n. 7
0
 // Use this for initialization
 void Start()
 {
     _frictionJoint    = GetComponent <FrictionJoint2D>();
     _boosterText.text = "";
 }
Esempio n. 8
0
 private void Awake()
 {
     myJoint = GetComponent <FrictionJoint2D>();
     rb      = GetComponent <Rigidbody2D>();
 }
 public static Tween TweenMaxForce(this FrictionJoint2D joint, float to, float duration) =>
 Tweening.To(getter: () => joint.maxForce,
             setter: maxForce => joint.maxForce = maxForce,
             to, duration).SetTarget(joint);
Esempio n. 10
0
        // public void ApplyAnchors(Joint2D joint) {
        //  if (jointType == JointType2D.RelativeJoint2D)
        //      return;
        //  if (jointType == JointType2D.TargetJoint2D) {
        //      ((TargetJoint2D) joint).anchor = anchor;
        //      ((TargetJoint2D) joint).target = target; // needs to be world relative
        //      return;
        //  }
        //  ((AnchoredJoint2D) joint).anchor = anchor;
        //  ((AnchoredJoint2D) joint).connectedAnchor = connectedAnchor;
        // }

        // public void ApplyLimits(Joint2D joint, GameObject go, Rigidbody2D connectedBody) {
        //     if (jointType != JointType2D.HingeJoint2D)
        //         return;
        //     Quaternion startRotation = go.transform.rotation;
        //     if (useLimits && limits.relativeTo == AngleLimitsRelativeTo.ZeroRotation && connectedBody) {
        //         go.transform.rotation = connectedBody.transform.rotation;
        //         // setting the connectedBody triggers a re-calculation of the reference angle
        //         joint.connectedBody = connectedBody;
        //     }
        //     ((HingeJoint2D) joint).limits = limits.ToJointAngleLimits2D();
        //     if (useLimits && limits.relativeTo == AngleLimitsRelativeTo.ZeroRotation && connectedBody)
        //         go.transform.rotation = startRotation;
        // }

        public Joint2D CreateOrApply(GameObject go, Rigidbody2D connectedBody, Joint2D joint = null)
        {
            if (joint && !JointMatchesJointType(joint))
            {
                GameObject.Destroy(joint);
                joint = null;
            }
            if (jointType == JointType2D.DistanceJoint2D)
            {
                DistanceJoint2D distanceJoint = (DistanceJoint2D)joint ?? go.AddComponent <DistanceJoint2D>();
                ConfigureAnchoredJoint(distanceJoint, connectedBody);
                distanceJoint.maxDistanceOnly       = maxDistanceOnly;
                distanceJoint.autoConfigureDistance = autoConfigureDistance;
                if (!autoConfigureDistance)
                {
                    distanceJoint.distance = distance;
                }
                joint = distanceJoint;
            }
            if (jointType == JointType2D.FixedJoint2D)
            {
                FixedJoint2D fixedJoint = (FixedJoint2D)joint ?? go.AddComponent <FixedJoint2D>();
                ConfigureAnchoredJoint(fixedJoint, connectedBody);
                fixedJoint.frequency    = frequency;
                fixedJoint.dampingRatio = dampingRatio;
                joint = fixedJoint;
            }
            if (jointType == JointType2D.FrictionJoint2D)
            {
                FrictionJoint2D frictionJoint = (FrictionJoint2D)joint ?? go.AddComponent <FrictionJoint2D>();
                ConfigureAnchoredJoint(frictionJoint, connectedBody);
                frictionJoint.maxForce  = maxFrictionForce;
                frictionJoint.maxTorque = maxFrictionTorque;
                joint = frictionJoint;
            }
            if (jointType == JointType2D.HingeJoint2D)
            {
                Quaternion startRotation = go.transform.rotation;
                // if (useLimits && limits.relativeTo == AngleLimitsRelativeTo.ZeroRotation && connectedBody)
                //     go.transform.rotation = connectedBody.transform.rotation;
                HingeJoint2D hingeJoint = (HingeJoint2D)joint ?? go.AddComponent <HingeJoint2D>();
                ConfigureAnchoredJoint(hingeJoint, connectedBody);
                hingeJoint.limits    = limits.ToJointAngleLimits2D();
                hingeJoint.useLimits = useLimits;
                JointMotor2D m = new JointMotor2D();
                m.maxMotorTorque    = motor.maxMotorTorque;
                m.motorSpeed        = motor.motorSpeed;
                hingeJoint.motor    = m;
                hingeJoint.useMotor = useMotor;
                joint = hingeJoint;
                // if (useLimits && limits.relativeTo == AngleLimitsRelativeTo.ZeroRotation && connectedBody)
                //     go.transform.rotation = startRotation;
            }
            if (jointType == JointType2D.RelativeJoint2D)
            {
                RelativeJoint2D relativeJoint = (RelativeJoint2D)joint ?? go.AddComponent <RelativeJoint2D>();
                ConfigureJoint(relativeJoint, connectedBody);
                relativeJoint.autoConfigureOffset = autoConfigureOffset;
                if (!autoConfigureOffset)
                {
                    relativeJoint.linearOffset  = linearOffset;
                    relativeJoint.angularOffset = angularOffset;
                }
                relativeJoint.correctionScale = correctionScale;
                relativeJoint.maxForce        = maxForce;
                relativeJoint.maxTorque       = maxTorque;
                joint = relativeJoint;
            }
            if (jointType == JointType2D.SliderJoint2D)
            {
                SliderJoint2D sliderJoint = (SliderJoint2D)joint ?? go.AddComponent <SliderJoint2D>();
                ConfigureAnchoredJoint(sliderJoint, connectedBody);
                joint = sliderJoint;
            }
            if (jointType == JointType2D.SpringJoint2D)
            {
                SpringJoint2D springJoint = (SpringJoint2D)joint ?? go.AddComponent <SpringJoint2D>();
                ConfigureAnchoredJoint(springJoint, connectedBody);
                springJoint.autoConfigureDistance = autoConfigureDistance;
                if (!autoConfigureDistance)
                {
                    springJoint.distance = distance;
                }
                springJoint.dampingRatio = dampingRatio;
                springJoint.frequency    = frequency;
                joint = springJoint;
            }
            if (jointType == JointType2D.TargetJoint2D)
            {
                TargetJoint2D targetJoint = (TargetJoint2D)joint ?? go.AddComponent <TargetJoint2D>();
                targetJoint.autoConfigureTarget = false;
                targetJoint.anchor       = anchor;
                targetJoint.target       = target;
                targetJoint.maxForce     = maxForce;
                targetJoint.dampingRatio = dampingRatio;
                targetJoint.frequency    = frequency;
                joint = targetJoint;
            }
            if (jointType == JointType2D.WheelJoint2D)
            {
                WheelJoint2D wheelJoint = (WheelJoint2D)joint ?? go.AddComponent <WheelJoint2D>();
                ConfigureJoint(wheelJoint, connectedBody);
                joint = wheelJoint;
            }
            return(joint);
        }