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 }
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); }
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); }
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; }
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(); } } }