Esempio n. 1
0
 private void CheckForGrabbable()
 {
     Ray        ray = new Ray(transform.position, transform.forward);
     RaycastHit hit;
     bool       hitObject = Physics.Raycast(ray, out hit, 3f, LayerUtil.GetLayerMask(Layers.GrabbableObject));
     // TODO illuminate object
 }
Esempio n. 2
0
        private bool GroundHitCheck()
        {
            Vector3 rayPos = body.transform.position;
            Ray     ray    = new Ray(rayPos, Vector3.down);

            float dist = GetLowerExtent();

            const int gridSplit = 3; // Must be odd for now

            var pos = body.transform.position;

            for (int x = -(gridSplit - 1) / 2; x < (gridSplit - 1) / 2; x++)
            {
                for (int y = -(gridSplit - 1) / 2; y < (gridSplit - 1) / 2; y++)
                {
                    rayPos.x = pos.x + x * collider.bounds.extents.x;
                    rayPos.z = pos.z + y * collider.bounds.extents.y;
                    ray      = new Ray(rayPos, Vector3.down);

                    Layers[] layers = new Layers[]
                    {
                        Layers.Surface, Layers.GrabbableObject
                    };
                    if (Physics.Raycast(ray, dist, LayerUtil.GetLayerMask(layers)))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Esempio n. 3
0
        private PlacematComponent GetPlacemat()
        {
            Ray        ray = new Ray(transform.position, transform.forward);
            RaycastHit hit;
            bool       hitObject = Physics.Raycast(ray, out hit, 3f, LayerUtil.GetLayerMask(Layers.ObjectPlacemat));

            if (hitObject)
            {
                return(hit.collider.gameObject.GetComponentInParent <PlacematComponent>());
            }
            return(null);
        }
Esempio n. 4
0
    void Awake()
    {
        Velocity              = Vector3.zero;
        Up                    = new Vector3(0, 1, 0);
        Position              = transform.position;
        groundLayer           = LayerMask.NameToLayer(LayerUtil.GROUND);
        rotateGroundLayer     = LayerMask.NameToLayer(LayerUtil.ROTATE_GROUND);
        flipGroundLayer       = LayerMask.NameToLayer(LayerUtil.FLIP_GROUND);
        groundLayerMask       = LayerUtil.GetLayerMask(LayerUtil.GROUND);
        rotateGroundLayerMask = LayerUtil.GetLayerMask(LayerUtil.ROTATE_GROUND);
        flipGroundLayerMask   = LayerUtil.GetLayerMask(LayerUtil.FLIP_GROUND);
        allTerrainMask        = groundLayerMask | rotateGroundLayerMask | flipGroundLayerMask;

        startZ = transform.position.z;
    }
Esempio n. 5
0
        private void TryGrabObject()
        {
            Ray        ray = new Ray(transform.position, transform.forward);
            RaycastHit hit;
            bool       hitObject = Physics.Raycast(ray, out hit, 3f, LayerUtil.GetLayerMask(Layers.GrabbableObject));

            if (hitObject)
            {
                Debug.Log(hit.collider.gameObject.name);
                var grabbable = hit.collider.gameObject.GetComponentInParent <GrabbableObject>();
                if (grabbable != null)
                {
                    state       = States.HoldingObject;
                    currentHeld = grabbable;
                    currentHeld.gravityOff();
                }
            }
        }