0.2.0 • Published 6 years ago

aframe-snapto-component v0.2.0

Weekly downloads
3
License
ISC
Repository
github
Last release
6 years ago

aframe-snapto-component

The snapto component provides helpers for snapping entities to a grid, or to the ground (either position or position and slope).

Generally snapto is used at entity creation time, but it can also be set to continuous (with a slight performance hit) for objects that move or grounds that change shape.

When snapping with hitnormal, the default y-axis is aligned to the ground normal, and the default x and z axis are tangential to the ground normal.

Demo

Screenshot

Example

<head>
  <script src="https://aframe.io/releases/0.8.0/aframe.min.js"></script>
  <script src="https://unpkg.com/aframe-snapto-component/dist/aframe-snapto-component.js"></script>
</head>
<body>
  <a-box snapto="type: hitnormal; offset: 0 0.5 0;"></a-box>
  <a-plane color="white" rotation="-20 0 0" scale="5 5 5" opacity="0.5"></a-plane>
</body>

Attributes

PropertyDescriptionDefault ValueType
continuousif true, perform the snap every frame, good for moving objects, but computationally expensive (cannot be changed at runtime)falseboolean
directionif type is 'hitposition' or 'hitnormal'. world direction of the ray for the snap test{x: 0, y: -1, z: 0}vec3
gridif type is 'gridsnap'. grid spacing, centered on 0,0,0{x: 1, y: 1, z: 1}vec3
objectsif type is 'hitposition' or 'hitnormal'. selector for determining which objects for the raycast, by default checks against all other objects in the scene'*'string
offsetoffset (in local coordinates) to apply to the node after it has been snapped into place{x: 0, y: 0, z: 0}vec3
rayStartif type is 'hitposition' or 'hitnormal'. start point along the 'direction' for the ray from the entities origin, can use -ve values to start behind the entity0number
typealign the object to either the position of the hit pointing UP (hitposition), to the hit position with the up in the direction of the normal (hitnormal), or grid position (gridsnap)'hitposition'string

Limitations

hitposition and hitnormal do not work correctly when hitting the back-side of a two sided material, they will force the object to the front-side.

Ideally the snapto component is placed at the end of the html line, so any other components that re-position the entity will occur before the entity is snapped to position.