Example #1
0
    public void snappingNow()
    {
        RopeEnd b        = ropeEndClone.gameObject.GetComponent <RopeEnd>();
        Vector3 startPos = ropeStartClone.gameObject.transform.position;
        Vector3 endPos   = ropeEndClone.gameObject.transform.position + (b._velocity * b.Speed) * Time.deltaTime;

        for (int j = 0; j < pythaTheo(startPos.x, startPos.y, endPos.x, endPos.y) / 5; j++)
        {
            var mid = (GameObject)GameObject.Instantiate(ropeSnapParticle);
            mid.transform.position = LerpByDistance(startPos, endPos, j * 5);
            mid.transform.rotation = Quaternion.Euler(0.0f, 0.0f, 360 - Vector3.Angle(startPos, endPos));
            mid.gameObject.GetComponent <RopeSnap>().moveX = (startPos.x - mid.transform.position.x) / 50;
            mid.gameObject.GetComponent <RopeSnap>().moveY = (startPos.y - mid.transform.position.y) / 50;
            //mid.gameObject.transform.position += (a._velocity * a.Speed) * Time.deltaTime;
        }
        for (int j = 0; j < pythaTheo(startPos.x, startPos.y, endPos.x, endPos.y) / 5; j++)
        {
            var mid = (GameObject)GameObject.Instantiate(ropeSnapParticle);
            mid.transform.position = LerpByDistance(startPos, endPos, j * 5);
            mid.transform.rotation = Quaternion.Euler(0.0f, 0.0f, 360 - Vector3.Angle(startPos, endPos));
            mid.gameObject.GetComponent <RopeSnap>().moveX = (startPos.x - endPos.x) / 50;
            mid.gameObject.GetComponent <RopeSnap>().moveY = (startPos.y - endPos.y) / 50;
            //mid.gameObject.transform.position += (a._velocity * a.Speed) * Time.deltaTime;
        }
    }
Example #2
0
    // Start is called before the first frame update
    void Start()
    {
        ProjectilePosition   = GameObject.Find("ReloadPosition").GetComponent <Transform>();
        RopeEnd              = GameObject.Find("Seg6");
        RopeEndJoint         = RopeEnd.GetComponent <FixedJoint2D>();
        gameControllerScript = GameObject.Find("GameControllerScript").GetComponent <GameControllerScript>();

        launched         = true;
        coroutineTrigger = true;
        ejected          = false;
        FlyingSound      = GetComponent <AudioSource>();
    }
Example #3
0
 void Update()
 {
     rigidbody.maxAngularVelocity = MaxAngl;
     //if (Input.GetKey(KeyCode.D))
     //    this.rigidbody.AddRelativeTorque(-Vector3.forward * torq);
     //if (Input.GetKey(KeyCode.A))
     //    this.rigidbody.AddRelativeTorque(Vector3.forward * torq);
     if (Input.GetMouseButtonDown(0))
     {
         RaycastHit h;
         if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out h, 1 << LayerMask.NameToLayer("Level")))
         {
             Vector3 nearest = Vector3.zero;
             foreach (var a in _Game.Path.nodes)
             {
                 foreach (var b in a.Nodes)
                 {
                     var p = a.pos + Vector3.Project(h.point - a.pos, (b.pos - a.pos).normalized);
                     if (Vector3.Distance(p, h.point) < Vector3.Distance(nearest, h.point))
                     {
                         nearest = p;
                     }
                 }
             }
             print("hit:" + nearest);
             Debug.DrawLine(pos, nearest, Color.blue, 2);
             rope = ((GameObject)Instantiate(ropePrefab, pos, Quaternion.identity)).GetComponentInChildren <RopeEnd>();
             rope.rigidbody.AddForce((nearest - pos).normalized * ropeThrowForce);
             rope.cloth.stretchingStiffness = ropeThrowStiffness;
             rope.stiffness = ropeEndStiffness;
             rope.col       = ropeCollider;
             rope.cloth.AttachToCollider(ropeCollider, false, false);
             _Game.obsToRotate.Add(rope.parent);
         }
         {
             _Game.obsToRotate.Remove(rope.parent);
         }
         if (Input.GetMouseButtonUp(0) && rope != null)
         {
             Destroy(rope.parent.gameObject);
         }
     }
 }
Example #4
0
    void EjectReload()
    {
        if (launched == true)
        {
            Projectile           = Instantiate(ProjectilePrefab, ProjectilePosition.position, ProjectilePosition.rotation);
            RopeEndJoint.enabled = true;
            RopeEnd.GetComponent <FixedJoint2D>().connectedBody = Projectile.GetComponent <Rigidbody2D>();
            ejected          = false;
            launched         = false;
            coroutineTrigger = true;
        }
        else
        {
            if (Input.GetKeyDown(KeyCode.Space))
            {
                RopeEndJoint.enabled = false;
                if (ejected == false)
                {
                    if (Projectile.GetComponent <Rigidbody2D>().velocity.x > 0)
                    {
                        Projectile.GetComponent <Rigidbody2D>().AddForce(transform.right *
                                                                         (Projectile.GetComponent <Rigidbody2D>().velocity.x * 20));
                    }

                    if (Projectile.GetComponent <Rigidbody2D>().velocity.y > 0)
                    {
                        Projectile.GetComponent <Rigidbody2D>().AddForce(transform.up *
                                                                         (Projectile.GetComponent <Rigidbody2D>().velocity.y * 20));
                    }
                    ejected = true;

                    FlyingSound.Play();
                }
                if (coroutineTrigger == true)
                {
                    StartCoroutine(AutoReload());
                }
            }
        }
    }
Example #5
0
 void Update()
 {
     rigidbody.maxAngularVelocity = MaxAngl;
     //if (Input.GetKey(KeyCode.D))
     //    this.rigidbody.AddRelativeTorque(-Vector3.forward * torq);
     //if (Input.GetKey(KeyCode.A))
     //    this.rigidbody.AddRelativeTorque(Vector3.forward * torq);
     if (Input.GetMouseButtonDown(0))
     {
         RaycastHit h;
         if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out h, 1 << LayerMask.NameToLayer("Level")))
         {
             Vector3 nearest = Vector3.zero;
             foreach(var a in _Game.Path.nodes)
                 foreach (var b in a.Nodes)
                 {
                     var p = a.pos + Vector3.Project(h.point - a.pos, (b.pos - a.pos).normalized);
                     if (Vector3.Distance(p, h.point) < Vector3.Distance(nearest, h.point))
                         nearest = p;
                 }
             print("hit:"+nearest);
             Debug.DrawLine(pos, nearest, Color.blue, 2);
             rope = ((GameObject)Instantiate(ropePrefab, pos, Quaternion.identity)).GetComponentInChildren<RopeEnd>();
             rope.rigidbody.AddForce((nearest - pos).normalized * ropeThrowForce);
             rope.cloth.stretchingStiffness = ropeThrowStiffness;
             rope.stiffness = ropeEndStiffness;
             rope.col = ropeCollider;
             rope.cloth.AttachToCollider(ropeCollider, false, false);
             _Game.obsToRotate.Add(rope.parent);
         }
     {
         _Game.obsToRotate.Remove(rope.parent);
     }
     if (Input.GetMouseButtonUp(0) && rope != null)
         Destroy(rope.parent.gameObject);
     }
 }
Example #6
0
    void checkRay()
    {
        ropeStartClone.gameObject.transform.position = currentPlayer.transform.FindChild("_ropeSpawn").position;

        //Stop Velocity of End Rope after it reach the end of the length
        RopeEnd a        = ropeEndClone.gameObject.GetComponent <RopeEnd>();
        Vector3 startPos = ropeStartClone.gameObject.transform.position;
        Vector3 endPos   = ropeEndClone.gameObject.transform.position + (a._velocity * a.Speed) * Time.deltaTime;

        if (ropeMidCloneArray.Count > 0)
        {
            for (int i = ropeMidCloneArray.Count; i > 0; i--)
            {
                Destroy(ropeMidCloneArray[i - 1]);
                ropeMidCloneArray.RemoveAt(i - 1);
            }
        }

        if (pythaTheo(startPos.x, startPos.y, endPos.x, endPos.y) >= snapPoint && canBreak)
        {
            for (int j = 0; j < pythaTheo(startPos.x, startPos.y, endPos.x, endPos.y) / 10; j++)
            {
                var mid = (GameObject)GameObject.Instantiate(ropeMidObjectH);
                mid.transform.position = LerpByDistance(startPos, endPos, j * 10);
                mid.transform.rotation = Quaternion.Euler(0.0f, 0.0f, 360 - Vector3.Angle(startPos, endPos));
                ropeMidCloneArray.Add(mid);
            }
        }
        else if (pythaTheo(startPos.x, startPos.y, endPos.x, endPos.y) >= ropeRange)
        {
            for (int j = 0; j < pythaTheo(startPos.x, startPos.y, endPos.x, endPos.y) / 10; j++)
            {
                var mid = (GameObject)GameObject.Instantiate(ropeMidObjectM);
                mid.transform.position = LerpByDistance(startPos, endPos, j * 10);
                mid.transform.rotation = Quaternion.Euler(0.0f, 0.0f, 360 - Vector3.Angle(startPos, endPos));
                ropeMidCloneArray.Add(mid);
            }
        }
        else
        {
            for (int j = 0; j < pythaTheo(startPos.x, startPos.y, endPos.x, endPos.y) / 10; j++)
            {
                var mid = (GameObject)GameObject.Instantiate(ropeMidObject);
                mid.transform.position = LerpByDistance(startPos, endPos, j * 10);
                mid.transform.rotation = Quaternion.Euler(0.0f, 0.0f, 360 - Vector3.Angle(startPos, endPos));
                ropeMidCloneArray.Add(mid);
            }
        }



        if (pythaTheo(startPos.x, startPos.y, endPos.x, endPos.y) >= snapPointX && canBreak)
        {
            snapTheRope();
        }

        Debug.DrawLine(startPos, endPos, Color.red);
        //Debug.Log (pythaTheo(startPos.x, startPos.y, endPos.x, endPos.y));
        if (ropeRange < pythaTheo(startPos.x, startPos.y, endPos.x, endPos.y) && !maxLengthReached)
        {
            Debug.Log("End of Rope");
            a.SendMessage("SetVelocity", new Vector3(0, 0, 0));
            maxLengthReached = true;
            if (!a.hitObject)
            {
                destroyTheRope();
            }
        }
    }