Exemple #1
0
    private void Update()
    {
        rayPos     = this.transform.position + new Vector3(0.3f * rayDir.x, 0.3f * rayDir.y, 0);
        lr.enabled = isActivate;
        BlobA.SetActive(isActivate);
        BlobB.SetActive(isActivate);
        if (player.dead == true || player.isTransitioning == true)
        {
            StartCoroutine(Reset(player.isTransitioning));
        }
        if (isMove == true && isActivate == true)
        {
            velocity    = MoveSpeed * dir;
            rb.velocity = velocity;
            RaycastHit2D hit = Physics2D.Raycast(transform.position + (Vector3)rayDir * 0.01f, velocity.normalized, hitDist, ~((1 << 10) | (1 << 2) | (1 << 11) | (1 << 1) | (1 << 9)));
            if (hit.collider != null && hit.collider.isTrigger == false)
            {
                dir = -dir;
            }
        }
        else
        {
            velocity    = rb.velocity;
            rb.velocity = Vector2.zero;
        }
        if (isActivate == true)
        {
            t += Time.deltaTime;
            float scale = (Mathf.Sin(40 * t) * 0.075f + 0.6f);
            lr.widthMultiplier         = (Mathf.Sin(40 * t) * 0.04f + 0.4f);
            BlobA.transform.localScale = new Vector3(scale, scale);
            BlobB.transform.localScale = new Vector3(scale, scale);

            bool dohit = false;
            lr.SetPosition(0, rayPos);
            Vector2      LimitPos = (Vector2)transform.position + rayDir * 100;
            RaycastHit2D hit      = Physics2D.Raycast(transform.position + (Vector3)rayDir * 0.01f, rayDir, 200, ~((1 << 10) | (1 << 2) | (1 << 11) | (1 << 9)));
            if (hit.collider != null && hit.collider.isTrigger == false)
            {
                lr.SetPosition(1, hit.point);
                BlobA.transform.position = new Vector3(hit.point.x, hit.point.y, -9);
                dohit = true;
                if (hit.collider.gameObject.tag == "Player")
                {
                    player.dead = true;
                    StartCoroutine(Reset(false));
                }
            }
            if (dohit == false)
            {
                lr.SetPosition(1, LimitPos);
                BlobA.transform.position = LimitPos;
            }
            BlobB.transform.position = rayPos;
        }
    }
Exemple #2
0
    private void Update()
    {
        rayPos     = this.transform.position + new Vector3(0.3f * rayDir.x, 0.3f * rayDir.y, 0);
        lr.enabled = isActivate;
        BlobA.SetActive(isActivate);
        BlobB.SetActive(isActivate);
        if (isActivate)
        {
            t += Time.deltaTime;
            float scale = (Mathf.Sin(40 * t) * 0.075f + 0.6f);
            lr.widthMultiplier         = (Mathf.Sin(40 * t) * 0.04f + 0.4f);
            BlobA.transform.localScale = new Vector3(scale, scale);
            BlobB.transform.localScale = new Vector3(scale, scale);

            bool dohit = false;
            lr.SetPosition(0, rayPos);
            Vector2      LimitPos = (Vector2)transform.position + rayDir * 100;
            RaycastHit2D hit      = Physics2D.Raycast(transform.position + (Vector3)rayDir * 0.01f, rayDir, 200, ~((1 << 10) | (1 << 2) | (1 << 11) | (1 << 9)));
            if (hit.collider != null && hit.collider.isTrigger == false)
            {
                lr.SetPosition(1, hit.point);
                BlobA.transform.position = new Vector3(hit.point.x, hit.point.y, -9);
                dohit = true;
                if (hit.collider.gameObject.tag == "Player")
                {
                    player.dead = true;
                }
            }
            if (dohit == false)
            {
                lr.SetPosition(1, LimitPos);
                BlobA.transform.position = LimitPos;
            }
            BlobB.transform.position = rayPos;
        }
    }