Example #1
0
    private void OnCollisionEnter(Collision collision)
    {
        Transform  hitObj = collision.transform;
        UnitCombat combat = hitObj.gameObject.GetComponent <UnitCombat>();

        if (combat == owner)
        {
            return;
        }

        if (combat != null)
        {
            if (owner.isBuffed == 1)
            {
                combat.Damage(Damage + 3.0f);
            }
            else
            {
                combat.Damage(Damage);
            }
        }
        else
        {
            var parentComb = hitObj.parent.gameObject.GetComponent <ShieldUnit>();
            if (parentComb != null && (parentComb.TeamIndex == owner.TeamIndex || (parentComb.transform.position - startPos).magnitude < parentComb.Radius))
            {
                Physics.IgnoreCollision(collision.collider, col, true);
                return;
            }
        }
        if (OnImpact != null)
        {
            OnImpact.Invoke();
        }

        if (explosionPrefab != null)
        {
            var obj = Instantiate(explosionPrefab, transform.position, Quaternion.identity) as GameObject;
        }

        Destroy(gameObject);
    }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        RaycastHit hit;

        Physics.Raycast(camera.transform.position, camera.transform.forward, out hit, 1000f, LayerMask.GetMask("Default"));

        if (hit.transform)
        {
            cursor.position = hit.point;
        }
        else
        {
            cursor.position = camera.transform.position + camera.transform.forward * 1000f;
        }

        if (lazersOn)
        {
            FaceLazers[0].SetPosition(0, transform.position - transform.right * lazerOffset);
            FaceLazers[1].SetPosition(0, transform.position + transform.right * lazerOffset);
            FaceLazers[0].SetPosition(1, cursor.position);
            FaceLazers[1].SetPosition(1, cursor.position);

            if (count++ % perframes == 0)
            {
                Instantiate(lazerExplosion, cursor.position, Quaternion.identity);
            }

            var hits = Physics.SphereCastAll(camera.transform.position, 1, camera.transform.forward, 1000f, LayerMask.GetMask("Units"));
            foreach (var h in hits)
            {
                if (hit.transform)
                {
                    UnitCombat comb = h.transform.GetComponent <UnitCombat>();
                    UnitBase   unit = h.transform.GetComponent <UnitBase>();

                    print(hit);
                    print(comb);
                    print(unit);
                    if (unit != null && comb != null && unit.TeamIndex == 1 && unit as UnitProducer == null)
                    {
                        comb.Damage(lazerDamage);
                    }
                }
            }
        }

        if (Input.GetMouseButtonDown(0)) // Did the player just click down the left mouse?
        {
            clickStartPos = Input.mousePosition;
        }

        if (Input.GetMouseButtonUp(0)) // Did the player just click down the left mouse?
        {
            if (Vector2.Distance(clickStartPos, Input.mousePosition) > dragThreshold)
            {
                OnBoxSelect(clickStartPos, Input.mousePosition);
            }
            else
            {
                OnLeftClick(camera.ScreenPointToRay(Input.mousePosition));
            }
        }



        if (Input.GetMouseButtonDown(1)) // Did the player just click down the right mouse?
        {
            OnRightClick(camera.ScreenPointToRay(Input.mousePosition));
        }
    }