예제 #1
0
    public static Int32 CollisionAngle(PosObj po, Obj coll)
    {
        PosObj  posObj     = (PosObj)coll;
        Vector3 b          = new Vector3(po.pos[0], po.pos[1], po.pos[2]);
        Vector3 a          = new Vector3(posObj.pos[0], posObj.pos[1], posObj.pos[2]);
        Vector3 posObjRot  = EventCollision.GetPosObjRot(po);
        Vector3 posObjRot2 = EventCollision.GetPosObjRot(posObj);
        Vector3 normalized = (a - b).normalized;

        if (normalized == Vector3.zero)
        {
            return(0);
        }
        Vector3 eulerAngles = Quaternion.LookRotation(normalized).eulerAngles;
        Vector3 vector      = eulerAngles - posObjRot;

        vector.x = ((vector.x <= 180f) ? vector.x : (vector.x - 360f));
        vector.x = ((vector.x >= -180f) ? vector.x : (vector.x + 360f));
        vector.y = ((vector.y <= 180f) ? vector.y : (vector.y - 360f));
        vector.y = ((vector.y >= -180f) ? vector.y : (vector.y + 360f));
        vector.z = ((vector.z <= 180f) ? vector.z : (vector.z - 360f));
        vector.z = ((vector.z >= -180f) ? vector.z : (vector.z + 360f));
        Single floatAngle = vector.magnitude - 180f;

        return(EventEngineUtils.ConvertFloatAngleToFixedPoint(floatAngle));
    }