Ejemplo n.º 1
0
    private IEnumerator PlaySword(NodeCollider.NodeHit grabbedNode, float attackSpeed)
    {
        float slashTime = attackSpeed / 3f;

        while (true)
        {
            slashTime += Time.deltaTime;
            Node    updatedNode = UpdateNode(grabbedNode);
            Vector2 direction   = GetNodeDirection(updatedNode);

            transform.position = updatedNode.position;
            transform.rotation = Quaternion.FromToRotation(Vector3.right, direction);

            if (slashTime >= attackSpeed)
            {
                slashTime -= attackSpeed;

                BloodParticlesManager.Play(updatedNode.position + Vector2.right / 10, direction);
                ScreenShake.Play();
            }

            if (slashTime > attackSpeed / 3f)
            {
                swordSprite.transform.localPosition = Vector3.right / 10 + Vector3.down / 10;
            }
            else
            {
                swordSprite.transform.localPosition = Vector3.left / 20 + Vector3.down / 10;
            }


            yield return(null);
        }
    }
Ejemplo n.º 2
0
    private Node UpdateNode(NodeCollider.NodeHit grabbedNode)
    {
        Node updatedNode;

        if (grabbedNode.node.side == NodeSide.Left)
        {
            updatedNode = grabbedNode.nodeManager.nodesLeft[grabbedNode.node.index];
        }
        else
        {
            updatedNode = grabbedNode.nodeManager.nodesRight[grabbedNode.node.index];
        }
        return(updatedNode);
    }
Ejemplo n.º 3
0
    private void InitializeGrab()
    {
        if (grab == false && grabbedNode != null)
        {
            grabbedNode = null;
            rigidbody2D.isKinematic = false;
            SwordEffect.Stop();
        }
        if (grab == true && grabbedNode == null && nodeCollider.hits.Count > 0)
        {
            grabbedNode = nodeCollider.hits.First().Value;
            Vector2 grabTranslation = (Vector2)transform.position - grabbedNode.node.position;
            grabOffset = grabTranslation.magnitude;
            grabRotation = Quaternion.FromToRotation(grabbedNode.node.velocity, grabTranslation);
            rigidbody2D.isKinematic = true;

            SwordEffect.Play(grabbedNode, attackSpeed);
        }
    }
Ejemplo n.º 4
0
 public static void Play(NodeCollider.NodeHit grabbedNode, float attackSpeed)
 {
     instance.swordSprite.enabled = true;
     instance.StartCoroutine(instance.PlaySword(grabbedNode, attackSpeed));
 }