Garry's Mod Wiki

Revision Difference

Entity:GetBonePosition#529400

<function name="GetBonePosition" parent="Entity" type="classfunc"> <description> Returns the position and angle of the given attachment, relative to the world. <warning>This function can return entity's `GetPos()` instead if the entity doesn't have it's bone cache set up. To ensure the bone position is correct use this: ```lua local pos = ent:GetBonePosition(0) if pos == ent:GetPos() then pos = ent:GetBoneMatrix(0):GetTranslation() end ``` </warning> <note>This function returns the bone position from the last tick, so if your framerate is higher than the server's tickrate it may appear to lag behind if used on a fast moving entity. You can fix this by using the bone's matrix instead: ```lua local matrix = matrix:GetBoneMatrix(0) local matrix = ent:GetBoneMatrix(0) local pos = matrix:GetTranslation() local ang = matrix:GetAngles() ``` </note> <bug issue="884">This can return the server's position during server lag.</bug> <bug issue="3285">This can return garbage serverside or <page>Global.Vector</page>(0,0,0) for v49 models.</bug> <bug issue="3739">This can return garbage if a trace passed through the target bone during bone matrix access.</bug> </description> <realm>Shared</realm> <args> <arg name="boneIndex" type="number">The bone index of the bone to get the position of. See <page>Entity:LookupBone</page>.</arg> </args> <rets> <ret name="" type="Vector">The bone's position relative to the world. It can return nothing if the requested bone is out of bounds, or the entity has no model.</ret> <ret name="" type="Angle">The bone's angle relative to the world.</ret> </rets> </function>