Example #1
0
    private void Update()
    {
        var col = Physics.OverlapSphere(transform.position, 2, SkillDamageCaculate.GetDropItemLayer());

        foreach (var c in col)
        {
            //Log.Sys("DropItem: "+c.gameObject);
            if (c.gameObject.GetComponent <DropItemStatic>())
            {
                c.gameObject.GetComponent <DropItemStatic>().PickCol(this.gameObject);
            }
        }
    }
Example #2
0
    //3条射线,当前角度 偏左 偏右角度
    private bool CheckHit()
    {
        if (attr == null)
        {
            return(false);
        }

        degree   = GameConst.Instance.SectorDegree;
        distance = GameConst.Instance.SectorDistance;

        //var curDir = transform.parent.rotation.eulerAngles.y;
        var curDir = sm.controlDir;
        //var dir = transform.parent.forward;
        var dir = Quaternion.Euler(new Vector3(0, curDir, 0)) * Vector3.forward;
        //主体的位置
        var pos = attr.gameObject.transform.position + new Vector3(0, 0.3f, 0) + dir * 1; //向前偏移一些距离

        var forwardDir = Quaternion.Euler(new Vector3(0, curDir, 0)) * Vector3.forward;
        var left       = Quaternion.Euler(new Vector3(0, curDir - degree, 0)) * Vector3.forward;
        var right      = Quaternion.Euler(new Vector3(0, curDir + degree, 0)) * Vector3.forward;
        var tests      = new Vector3[]
        {
            forwardDir, left, right,
        };

        RaycastHit hitInfo;
        bool       hitYet = false;

        hitTarget = null;
        foreach (var d in tests)
        {
            var h = Physics.Raycast(pos, d, out hitInfo, distance, SkillDamageCaculate.GetDamageLayer());
            Log.Sys("HitTarget: " + h + " pos " + hitInfo.collider + " d " + d + " pos " + pos);
            if (h)
            {
                Log.Sys("HitTarget: " + h + " pos " + hitInfo.collider);
                if (hitInfo.collider.gameObject.tag == GameTag.Player)
                {
                    hitYet    = true;
                    hitTarget = hitInfo.collider.gameObject;
                    break;
                }
            }
        }
        IsHitTarget = hitYet;
        Log.Sys("HitResult:" + IsHitTarget);
        return(hitYet);
    }