示例#1
0
    void Start()
    {
        // assign the rigidbody component
        rb = GetComponent <Rigidbody2D>();
        // assign Wall layer to variable
        walls       = LayerMask.NameToLayer("Walls");
        anchorLayer = LayerMask.NameToLayer("Anchors");
        buttons     = LayerMask.NameToLayer("Buttons");
        // make sure that raycasts don't detect the colliders that they start in
        Physics2D.queriesStartInColliders = false;
        stamina = maxStamina;
        //rend = GetComponentInChildren<SpriteRenderer>();
        leftTentacle.anchorPos  = null;
        rightTentacle.anchorPos = null;
        switchTentacles         = false;
        slingshot   = Sling.None;
        bc          = GetComponent <BoxCollider2D>();
        anim        = GetComponent <Animator>();
        movement    = Movement.Ground;
        groundingLR = Grounding.None;

        anchorGrip = AnchorGrip.None;

        rendTransform = rend.transform;
        increment[0]  = Random.Range(0f, 10f);
        increment[1]  = Random.Range(0f, 10f);



        saveController.LoadGame();

        rend.flipX     = faceDir == -1 ? true : false;
        Cursor.visible = false;

        endgame = false;
    }
示例#2
0
    private void FixedUpdate()
    {
        // launch
        if (launch && !delayLaunch)
        {
            // clamp the magnitude of the launch
            rb.AddForce(Vector2.ClampMagnitude(launchDir.right * SpringCalc2(), 7000f));
            //print((1/SpringCalc2()) * 1200f + " force");
            // no longer launching
            launch = false;
            LaunchDelay((1 / SpringCalc2()) * 1200f);
        }

        float speedMult = 100f;

        if (movement == Movement.Airborne || movement == Movement.Launch)
        {
            speedMult = 10f;
        }

        rb.AddForce(new Vector2(hor * speedMult, vert * speedMult));



        if (movement == Movement.Ground || movement == Movement.Wallclimb)
        {
            if (rb.velocity.magnitude >= 10f)
            {
                rb.velocity = Vector2.ClampMagnitude(rb.velocity, 10f);
            }
        }


        if (leftTentacle.state == Tentacles.Anchored && rightTentacle.state == Tentacles.Anchored)
        {
            anchorGrip = AnchorGrip.Both;
        }
        else if (leftTentacle.state == Tentacles.Anchored || rightTentacle.state == Tentacles.Anchored)
        {
            anchorGrip = AnchorGrip.Single;
        }
        else
        {
            anchorGrip = AnchorGrip.None;
        }



        //if(anchorGrip == AnchorGrip.Single)
        //{
        //    var point = leftTentacle.anchorPos != null ? leftTentacle.anchorPos.position : rightTentacle.anchorPos.position;

        //    if(Vector2.Distance(point, transform.position) > tentacleRange)
        //    {
        //        var angle = -Vector2.Angle(Vector2.right, transform.position - point);
        //        if (angle >= -180 || angle <= 0)
        //        {
        //            print("Edge of circle");

        //            EnableGravity(false);
        //            rb.velocity = Vector2.zero;


        //            print(angle);
        //            angle = Mathf.Clamp(angle, -180f, 0f);

        //            var temp = 5 * (left + right) + angle;
        //            var edge = CirclePoint(point, tentacleRange, temp);
        //            transform.position = edge;
        //        }
        //    }
        //}



        #region Stickiness
        if (gripping)
        {
            stamina--;
        }
        #endregion

        if (Random.Range(0, 4) == 0 && (stamina < 45 && stamina != 0))
        {
            var temp = Instantiate(teardrop, transform.position, Quaternion.identity, transform);
            temp.transform.position += new Vector3(Random.Range(-1.5f, 1.5f), Random.Range(-1.5f, 1.5f));
        }
    }