#author("2024-09-02T05:26:51+00:00","default:iseki","iseki")
*** llLookAt()  by Janus Dugong [#wb1da18a]

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


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 ページ一覧 検索 最終更新   ヘルプ   最終更新のRSS