Пример #1
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag == "Player")
        {
            return;
        }
        if (daggerState == DaggerState.Flying)
        {
            flightVector = new Vector2(myRigidbody.velocity.x, -fallSpeed);
            AudioManager.instance.PlaySfx("Collide");
            if (collision.tag == "Ground")
            {
                daggerState = DaggerState.Colided;
                AudioManager.instance.PlaySfx("Hit");
            }
        }
        else if (daggerState == DaggerState.Colided)
        {
            flightVector     = new Vector2(0f, 0f);
            myAnimator.speed = 0f;
        }
        FlowerBase flower = collision.GetComponentInParent <FlowerBase>();

        if (flower != null)
        {
            flower.OnAttack();
        }
    }
Пример #2
0
    IEnumerator Retract()
    {
        State = DaggerState.Retracting;

        target          = Vector3.zero;
        TargetRigidbody = null;

        rigidbody.isKinematic = false;
        var retractionForce = (Vector3.up + transform.forward * -1f).normalized * RETRACT_POP_FORCE;

        rigidbody.AddForce(retractionForce, ForceMode.Impulse);

        audio.PlayOneShot(sounds.retract);

        yield return(new WaitForSeconds(0.5f));

        rotationParent.localRotation = Quaternion.AngleAxis(180f, Vector3.up);

        rigidbody.isKinematic = true;

        while (!MoveToTarget(originalParent.position, RETRACT_SPEED))
        {
            yield return(null);
        }

        State = DaggerState.Holstered;

        transform.parent        = originalParent;
        transform.localPosition = Vector3.zero;
        transform.localRotation = originalRotation;

        rotationParent.localRotation = Quaternion.identity;

        rope.enabled = false;
    }
Пример #3
0
    public void WillGrab()
    {
        if (State != DaggerState.Holstered)
        {
            return;
        }

        State = DaggerState.WillGrab;
    }
Пример #4
0
 private void OnCollisionEnter2D(Collision2D collision)
 {
     daggerState = DaggerState.Colided;
     if (daggerState == DaggerState.Colided)
     {
         flightVector     = new Vector2(0f, 0f);
         myAnimator.speed = 0f;
     }
 }
Пример #5
0
 public void ResetDagger()
 {
     myAnimator.SetBool("Flight", false);
     myCollider.enabled = false;
     daggerState        = DaggerState.Held;
     flightVector       = new Vector2(0f, 0f);
     myAnimator.speed   = 1f;
     flightTime         = 0f;
     renderer.sharedMaterial.SetColor("_EmissionColor", daggerEmission[0]);
 }
Пример #6
0
 public void Attack()
 {
     if (daggerState == DaggerState.Colided)
     {
         return;
     }
     myAnimator.SetBool("Attack", true);
     myAnimator.speed = 1f;
     daggerState      = DaggerState.Attacked;
 }
Пример #7
0
    public void Grab(Transform hand)
    {
        if (State != DaggerState.WillGrab)
        {
            return;
        }

        State = DaggerState.Grabbed;

        transform.parent        = hand;
        transform.localPosition = Vector3.zero;
        transform.localRotation = Quaternion.identity;
    }
Пример #8
0
    IEnumerator Fire()
    {
        var        ray = camera.ScreenPointToRay(Mouse.current.position.ReadValue());
        RaycastHit hit;

        if (!Physics.Raycast(ray, out hit, RANGE, mask) || Vector3.Distance(hit.point, transform.position) <= PICKUP_RADIUS)
        {
            State = DaggerState.Holstered;
            yield break;
        }

        State = DaggerState.Firing;

        transform.parent = null;
        target           = hit.point;

        rope.enabled = true;

        interceptTrigger.enabled = true;

        audio.PlayOneShot(sounds.fire);

        while (interceptTrigger.enabled && !MoveToTarget(target, TRAVEL_SPEED))
        {
            rotationParent.Rotate(Vector3.forward, TRAVEL_ROTATION * Time.deltaTime, Space.Self);

            yield return(null);
        }

        State = DaggerState.Embedded;

        interceptTrigger.enabled = false;

        if (TargetRigidbody == null)
        {
            TargetRigidbody = hit.rigidbody;
        }

        if (TargetRigidbody && TargetRigidbody.tag == "Enemy")
        {
            TargetRigidbody.GetComponentInParent <Guard>().Die();
        }

        embedDistance = Vector3.Distance(originalParent.position, target) + EMBED_EXTRA_SLACK_DISTANCE;
    }
Пример #9
0
 public void Throw(bool flightDirection)
 {
     if (daggerState == DaggerState.Colided)
     {
         return;
     }
     if (flightDirection)
     {
         flightVector = Vector2.left * flightSpeed;
     }
     else
     {
         flightVector = Vector2.right * flightSpeed;
     }
     daggerState = DaggerState.Flying;
     myAnimator.SetBool("Flight", true);
     myAnimator.speed = 1f;
 }
Пример #10
0
 private void Awake()
 {
     flightVector = new Vector2(0f, 0f);
     daggerState  = DaggerState.Colided;
     renderer.sharedMaterial.SetColor("_EmissionColor", daggerEmission[0]);
 }