コード例 #1
0
ファイル: DragToShoot.cs プロジェクト: ccylovemm/BigSoldier
    void Update()
    {
        if (!DataCenter.CanFire || UICamera.isOverUI)
        {
            return;
        }
        // Begin dragging?
        if (Input.GetMouseButton(0) == true && down == false)
        {
            down = true;
        }

        // End dragging?
        if (Input.GetMouseButton(0) == false && down == true)
        {
            down = false;

            // Fire?
            if (Camera.main != null)
            {
                var endMousePosition = Input.mousePosition;
                var startPos         = shootPos.position;
                var endPos           = Camera.main.ScreenToWorldPoint(endMousePosition);
                var vec       = endPos - startPos;
                var angle     = D2D_Helper.Atan2(vec) * -Mathf.Rad2Deg + AngleOffset + Random.Range(-0.5f, 0.5f) * AngleRandomness;
                var clone     = D2D_Helper.CloneGameObject(Resources.Load <GameObject>("Prefabs/Bomb/Bomb" + (DataCenter.currSelectBomb + 1)), null, startPos, Quaternion.Euler(0.0f, 0.0f, angle));
                var cloneRb2D = clone.GetComponent <Rigidbody2D>();

                if (cloneRb2D != null)
                {
                    cloneRb2D.velocity = (endPos - startPos).normalized * Mathf.Min(20.0f, Vector3.Distance(endPos, startPos));
                }

                EventSystem.DispatchEvent(EType.Fire);
            }
        }

        // Show dragging?
        if (Indicator != null)
        {
            Indicator.enabled = down;

            if (Camera.main != null && down == true)
            {
                var currentMousePosition = Input.mousePosition;
                var startPos             = shootPos.position;
                var currentPos           = Camera.main.ScreenToWorldPoint(currentMousePosition);
                var scale = Vector3.Distance(currentPos, startPos);
                var angle = D2D_Helper.Atan2(currentPos - startPos) * Mathf.Rad2Deg;

                scale = Mathf.Min(20.0f, scale);

                Indicator.transform.position      = shootPos.position;
                Indicator.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, -angle);
                Indicator.transform.localScale    = new Vector3(scale, scale, scale);
            }
        }
    }
コード例 #2
0
    protected virtual void Update()
    {
        // Begin dragging?
        if (Input.GetMouseButton(0) == true && down == false)
        {
            down = true;

            startMousePosition = Input.mousePosition;
        }

        // End dragging?
        if (Input.GetMouseButton(0) == false && down == true)
        {
            down = false;

            // Fire?
            if (Camera.main != null && Bullet != null)
            {
                var endMousePosition = Input.mousePosition;
                var startPos         = Camera.main.ScreenToWorldPoint(startMousePosition);
                startPos.Scale(new Vector3(1, 1, 0));
                var endPos = Camera.main.ScreenToWorldPoint(endMousePosition);
                endPos.Scale(new Vector3(1, 1, 0));
                var vec       = endPos - startPos;
                var angle     = D2D_Helper.Atan2(vec) * -Mathf.Rad2Deg + AngleOffset + Random.Range(-0.5f, 0.5f) * AngleRandomness;
                var clone     = D2D_Helper.CloneGameObject(Bullet, null, startPos, Quaternion.Euler(0.0f, 0.0f, angle));
                var cloneRb2D = clone.GetComponent <Rigidbody2D>();

                if (cloneRb2D != null)
                {
                    cloneRb2D.velocity = (endPos - startPos) * Power;
                }
            }
        }

        // Show dragging?
        if (Indicator != null)
        {
            Indicator.enabled = down;

            if (Camera.main != null && down == true)
            {
                var currentMousePosition = Input.mousePosition;
                var startPos             = Camera.main.ScreenToWorldPoint(startMousePosition);
                var currentPos           = Camera.main.ScreenToWorldPoint(currentMousePosition);
                var scale = Vector3.Distance(currentPos, startPos);
                var angle = D2D_Helper.Atan2(currentPos - startPos) * Mathf.Rad2Deg;

                var newPos = Camera.main.ScreenToWorldPoint(startMousePosition);
                newPos.Scale(new Vector3(1, 1, 0));

                Indicator.transform.position      = newPos;
                Indicator.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, -angle);
                Indicator.transform.localScale    = new Vector3(scale, scale, scale);
            }
        }
    }
コード例 #3
0
    protected virtual void Update()
    {
        if (Input.GetMouseButton(0) == true && down == false && Time.timeScale == 1)
        {
            down = true;
            startMousePosition = Input.mousePosition;
        }

        mouse_pos   = Input.mousePosition;
        object_pos  = Camera.main.WorldToScreenPoint(SpawnPoint.transform.position);
        mouse_pos.x = mouse_pos.x - object_pos.x;
        mouse_pos.y = mouse_pos.y - object_pos.y;
        var angle2 = Mathf.Atan2(mouse_pos.y, mouse_pos.x) * Mathf.Rad2Deg;

        if (Input.GetMouseButton(0) == false && down == true)
        {
            down = false;
            if (angle2 < 50 && angle2 > -50)
            {
                if (Camera.main != null && Bullet != null)
                {
                    var     endMousePosition = Input.mousePosition;
                    var     startPos         = Camera.main.ScreenToWorldPoint(startMousePosition);
                    var     endPos           = Camera.main.ScreenToWorldPoint(endMousePosition);
                    var     vec            = (endPos - startPos) * Power;
                    var     angle          = D2D_Helper.Atan2(vec) * -Mathf.Rad2Deg + AngleOffset + Random.Range(-0.5f, 0.5f) * AngleRandomness;
                    Vector3 rotationVector = new Vector3(0, 0, angle2);
                    SpawnPoint.transform.rotation = Quaternion.Euler(rotationVector);
                    var clone     = D2D_Helper.CloneGameObject(Bullet, null, SpawnPoint.transform.position, Quaternion.Euler(0.0f, 0.0f, angle2));
                    var cloneRb2D = clone.GetComponent <Rigidbody2D>();

                    if (cloneRb2D != null)
                    {
                        cloneRb2D.velocity = (endPos - startPos) * Power;
                        cloneRb2D.AddForce(new Vector2(100, 50));
                    }
                }
            }
        }

        if (Indicator != null && angle2 < 50 && angle2 > -50)
        {
            Indicator.enabled = down;
            if (Camera.main != null && down == true)
            {
                var currentMousePosition = Input.mousePosition;
                var startPos             = Camera.main.ScreenToWorldPoint(SpawnPoint.transform.position);
                var currentPos           = Camera.main.ScreenToWorldPoint(currentMousePosition);
                var scale = Vector3.Distance(currentPos, startPos);
                Debug.Log(scale);
                Indicator.transform.position      = SpawnPoint.transform.position;
                Indicator.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, angle2);
                Indicator.transform.localScale    = new Vector3(scale / 15, scale / 15, scale / 15);
            }
        }
    }
コード例 #4
0
    protected virtual void Update()
    {
        if (Input.GetKeyDown(Requires) == true && Prefab != null && Camera.main != null)
        {
            var ray      = Camera.main.ScreenPointToRay(Input.mousePosition);
            var distance = D2D_Helper.Divide(ray.origin.z, ray.direction.z);
            var point    = ray.origin - ray.direction * distance;

            D2D_Helper.CloneGameObject(Prefab, null).transform.position = point;
        }
    }
コード例 #5
0
    protected virtual void FixedUpdate()
    {
        if (IsFiring == true && Bullet != null && cooldownTimer <= 0.0f)
        {
            cooldownTimer = ShotCooldown;

            var clone = D2D_Helper.CloneGameObject(Bullet, null, transform.position, transform.rotation);
            var body  = clone.GetComponent <Rigidbody2D>();

            if (body != null)
            {
                body.velocity = transform.up * ShootSpeed;
            }
        }
    }
コード例 #6
0
ファイル: D2D_Damageable.cs プロジェクト: rickbatka/birds
    public void UpdateDestruction()
    {
        if (AllowDestruction == true)
        {
#if UNITY_EDITOR
            if (Application.isPlaying == false)
            {
                return;
            }
#endif
            if (Damage >= DamageLimit)
            {
                if (ReplaceWith != null)
                {
                    D2D_Helper.CloneGameObject(ReplaceWith, transform.parent, transform.position, transform.rotation);
                }

                D2D_Helper.Destroy(gameObject);
            }
        }
    }
コード例 #7
0
    public static bool Generate(D2D_Destructible destructible, D2D_SpriteSplitOrder splitOrder)
    {
        cells.Clear();

        if (destructible != null && destructible.AlphaTex != null)
        {
            target = destructible;
            tex    = target.AlphaTex;
            width  = tex.width;
            height = tex.height;
            total  = width * height;
            pixels = tex.GetPixels32();

            if (cells.Capacity < total)
            {
                cells.Capacity = total;
            }

            var threshold = (byte)(target.SplitThreshold * 255.0f);

            for (var i = 0; i < total; i++)
            {
                cells.Add(pixels[i].a >= threshold);
            }

            fills.Clear();

            var validFillCount = 0;

            for (var i = 0; i < total; i++)
            {
                if (cells[i] == true)
                {
                    currentFill = new Fill(); fills.Add(currentFill);

                    currentFill.XMin = currentFill.XMax = i % width;
                    currentFill.YMin = currentFill.YMax = i / width;

                    BeginFloodFill(i, currentFill.XMin, currentFill.YMin);

                    // Skip the first floodfill
                    if (currentFill.Count >= target.SplitMinPixels)
                    {
                        currentFill.Valid = true; validFillCount += 1;
                    }
                }
            }

            // Can we split?
            if (validFillCount > 1)
            {
                var firstSet = false;

                switch (splitOrder)
                {
                case D2D_SpriteSplitOrder.KeepLargest:  fills.Sort((a, b) => b.Count.CompareTo(a.Count)); break;

                case D2D_SpriteSplitOrder.KeepSmallest: fills.Sort((a, b) => a.Count.CompareTo(b.Count)); break;
                }

                foreach (var fill in fills)
                {
                    if (fill.Valid == true)
                    {
                        if (firstSet == false)
                        {
                            firstSet = true;

                            Split(destructible, fill, false);
                        }
                        else
                        {
                            var clonedGameObject   = D2D_Helper.CloneGameObject(destructible.gameObject, destructible.transform.parent);
                            var clonedDestructible = clonedGameObject.GetComponent <D2D_Destructible>();

                            Split(clonedDestructible, fill, true);
                        }
                    }
                }

                return(true);
            }

            if (validFillCount == 0)
            {
                D2D_Helper.Destroy(destructible.gameObject);
            }
        }

        return(false);
    }
コード例 #8
0
    protected virtual void Update()
    {
        if (GameManager.getTurno(2) == true && GameManager.isLife((int)Codigo_dragon.Dragon_3_1) && D2D_ReplaceOnCollision.disparo_curso == 1)
        {
            LetPlayer.turno = 3;
            CameraMov.turno = 3;
            mouse_pos       = Input.mousePosition;
            object_pos      = Camera.main.WorldToScreenPoint(SpawnPoint.transform.position);
            mouse_pos.x     = mouse_pos.x - object_pos.x;
            mouse_pos.y     = mouse_pos.y - object_pos.y;
            var angle2 = Mathf.Atan2(mouse_pos.y, mouse_pos.x) * Mathf.Rad2Deg;
            if (angle2 < 50 && angle2 > -50)
            {
                Vector3 rotationVector2 = new Vector3(0, 0, angle2);
                transform.rotation = Quaternion.Euler(rotationVector2);
            }

            if (Input.GetMouseButton(0) == true && down == false && Time.timeScale == 1)
            {
                down = true;
                //tartMousePosition = Input.mousePosition;
                startMousePosition = SpawnPoint.transform.position;
            }

            if (Input.GetMouseButton(0) == false && down == true)
            {
                down = false;
                if (angle2 < 50 && angle2 > -50)
                {
                    if (Camera.main != null && Bullet != null)
                    {
                        an.SetTrigger("ataque");
                        var endMousePosition = Input.mousePosition;
                        //var startPos         = Camera.main.ScreenToWorldPoint(startMousePosition);
                        var     startPos       = startMousePosition;
                        var     endPos         = Camera.main.ScreenToWorldPoint(endMousePosition);
                        var     vec            = (endPos - startPos) * Power;
                        var     angle          = D2D_Helper.Atan2(vec) * -Mathf.Rad2Deg + AngleOffset + Random.Range(-0.5f, 0.5f) * AngleRandomness;
                        Vector3 rotationVector = new Vector3(0, 0, angle2);
                        SpawnPoint.transform.rotation = Quaternion.Euler(rotationVector);
                        Vector3 xSp = SpawnPoint.transform.position;
                        xSp.x = xSp.x + 0.5f;
                        var clone     = D2D_Helper.CloneGameObject(Bullet, null, xSp, Quaternion.Euler(0.0f, 0.0f, angle2));
                        var cloneRb2D = clone.GetComponent <Rigidbody2D>();
                        turno      = false;
                        audio.clip = disparo;
                        audio.Play();
                        if (cloneRb2D != null)
                        {
                            cloneRb2D.velocity = (endPos - startPos) * Power;
                            cloneRb2D.AddForce(new Vector2(100, 50));
                        }
                        D2D_ReplaceOnCollision.lado = 1;
                    }
                }
            }

            if (Indicator != null && angle2 < 50 && angle2 > -50)
            {
                Indicator.enabled = down;
                if (Camera.main != null && down == true)
                {
                    var currentMousePosition = Input.mousePosition;
                    var startPos             = Camera.main.ScreenToWorldPoint(SpawnPoint.transform.position);
                    var currentPos           = Camera.main.ScreenToWorldPoint(currentMousePosition);
                    var scale = Vector3.Distance(currentPos, startPos);
                    Indicator.transform.position      = SpawnPoint.transform.position;
                    Indicator.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, angle2);
                    if (scale / 15 > 1)
                    {
                        scale = 15;
                    }
                    Indicator.transform.localScale = new Vector3(scale / 15, scale / 15, scale / 15);
                    LetPlayer.turno = 0;
                }
            }
        }
    }
コード例 #9
0
    public static void EndSplitting(D2D_SplitOrder order, bool blur)
    {
        if (destructible != null)
        {
            if (Groups.Count > 0)
            {
                // Sort
                switch (order)
                {
                case D2D_SplitOrder.KeepLargest:  Groups.Sort((a, b) => b.Count.CompareTo(a.Count)); break;

                case D2D_SplitOrder.KeepSmallest: Groups.Sort((a, b) => a.Count.CompareTo(b.Count)); break;
                }

                // Store list of others
                splitData.SolidPixelCounts.Clear();

                for (var i = 0; i < Groups.Count; i++)
                {
                    splitData.SolidPixelCounts.Add(Groups[i].Count);
                }

                // Split
                for (var i = Groups.Count - 1; i >= 0; i--)
                {
                    var group = Groups[i];

                    splitData.Index   = i;
                    splitData.IsClone = i > 0;

                    // Split
                    if (i > 0)
                    {
                        var tempAlphaData = destructible.AlphaData;

                        destructible.AlphaData = null;

                        // Clone this destructible without alpha data, because we will manually set it after this
                        var clonedDestructible = D2D_Helper.CloneGameObject(destructible.gameObject, destructible.transform.parent).GetComponent <D2D_Destructible>();

                        destructible.AlphaData = tempAlphaData;

                        Split(clonedDestructible, group, true, blur);
                    }
                    // Overwrite original
                    else
                    {
                        Split(destructible, group, false, blur);
                    }
                }
            }
            else
            {
                D2D_Helper.Destroy(destructible.gameObject);
            }

            destructible = null;
        }

        D2D_ClassPool <D2D_SplitGroup> .Add(Groups, g => g.AddToPool());
    }