public override void UseEffect(Letter effector)
    {
        ModifyTrailBetweenPlayerAndThrowable();

        switch (Letter.ToUpper())
        {
        case "G":
            Thrower.SetGrappleDirection(transform.position, ropes);
            break;

        case "Y":
            Thrower.SetYank(effector, this.gameObject, ropes);
            break;

        default:
            Debug.Log(Letter + " is not a  throwable item");
            break;
        }
        DestroyAll();
    }
示例#2
0
    public override void UseEffect(Letter effector)
    {
        float   direction = GameManager.vectorToAngle(this.transform.position - Thrower.transform.position) - 90;
        Vector2 rope_pos  = Thrower.transform.position;

        float distance = Vector2.Distance(this.transform.position, Thrower.transform.position);

        List <RopeSegment> ropes = new List <RopeSegment> ();

        for (float i = 0; i <= distance; i += 0.1f)
        {
            rope_pos = Vector2.Lerp(Thrower.transform.position, transform.position, i / distance);

            GameObject  ropeobject  = Instantiate(ropeSegment_prefab, rope_pos, Quaternion.Euler(0, 0, direction)) as GameObject;
            RopeSegment ropesegment = ropeobject.GetComponent <RopeSegment> ();
            ropesegment.SqrDistanceFromStart = Mathf.Pow(i, 2);

            ropes.Add(ropesegment);
        }
        if (linkingRope != null)
        {
            Destroy(linkingRope);
        }

        switch (Letter.ToUpper())
        {
        case "G":
            Thrower.SetGrappleDirection(transform.position, ropes);
            break;

        case "Y":
            Thrower.SetYank(effector, this.gameObject, ropes);
            break;

        default:
            Debug.Log(Letter + " is not a  throwable item");
            break;
        }

        DestroyAll();
    }
示例#3
0
    public virtual void UseEffect(Letter effector)
    {
        switch (Letter.ToUpper())
        {
        case "E":
            effector.startDisappear();
            break;

        case "H":
            effector.SetMoveAmount(Quaternion.Euler(0, 0, -effector.transform.localRotation.eulerAngles.z) * new Vector3(0, 0.02f, 0));
            break;

        case "L":
            effector.SetMoveAmount(Quaternion.Euler(0, 0, -effector.transform.localRotation.eulerAngles.z) * new Vector3(0, -0.02f, 0));
            break;

        case "M":
            if (!effector.canBeHarvested)
            {
                effector.SetUnharvested(false);
            }
            break;

        case "G":
            Thrower.SetGrappleDirection(transform.position, null);
            break;

        case "Y":
            if (Thrower.collisionLetter != effector)
            {
                int direction = Math.Sign(Thrower.transform.position.x - this.transform.position.x);
                effector.SetMoveAmount(Quaternion.Euler(0, 0, -effector.transform.localRotation.eulerAngles.z) * new Vector3(direction * 0.02f, 0, 0));
            }
            break;

        default:
            Debug.Log(Letter + " is not a  throwable item");
            break;
        }
    }