llLookAt() by Janus Dugong 
public void llLookAt(LSL_Vector target, double strength, double damping) { m_host.AddScriptLPS(1); // Determine where we are looking from LSL_Vector from = llGetPos(); // normalized direction to target LSL_Vector dir = llVecNorm(target - from); // Janus Dugong & Fumi.Hax if (LSL_Vector.Mag(dir)<=0.0) return; // LSL_Vector vec_yaw = new LSL_Vector(0.0, 0.0, Math.Atan2(dir.y, dir.x)); // yaw LSL_Vector vec_pth = new LSL_Vector(0.0, Math.Acos(dir.z), 0.0); // pitch LSL_Rotation rot_yaw = llEuler2Rot(vec_yaw); LSL_Rotation rot_pth = llEuler2Rot(vec_pth); LSL_Rotation rot = rot_pth * rot_yaw; // Per discussion with Melanie, for non-physical objects llLookAt appears to simply // set the rotation of the object, copy that behavior PhysicsActor pa = m_host.PhysActor; if (strength == 0 || pa == null || !pa.IsPhysical) { llSetRot(rot); } else { m_host.StartLookAt(rot, (float)strength, (float)damping); } }
Counter: 1372,
today: 1,
yesterday: 0
最終更新: 2015-02-26 (木) 22:16:41 (JST) (3676d) by iseki