Вы должны исправить положение вашего объекта, чтобы отскочить внутри экрана, если ваш объект уже находится за пределами экрана, и он не полностью входит в пространство экрана в следующем кадре, тогда ваш объект меняется
Измените это:
if (gameObject.transform.position.y >= TopScreenBound.y)
{
direction.y *= -1;
}
if (gameObject.transform.position.y <= BottomScreenBound.y)
{
direction.y *= -1;
}
К этому:
if (gameObject.transform.position.y >= TopScreenBound.y)
{
gameObject.transform.position.y = TopScreenBound.y;
direction.y *= -1;
}
if (gameObject.transform.position.y <= BottomScreenBound.y)
{
gameObject.transform.position.y = BottomScreenBound.y;
direction.y *= -1;
}
В современном мире квантовых вычислений и автомобилей с автоматическим управлением я бы ожидал, что множественные объединения будут простой проблемой. Оказывается, это так.
Мой коллега предложил этот ответ, и он сработал. Я пропускал группу_by. group_by в подзапросе, очевидно, значительно сокращает время обработки.
Все, что мне нужно было сделать, это изменить subq1 следующим образом:
subq1 = session.query(su.DistCode,dr.RtrId, su.RtrCode, su.InvoiceNo, su.SlabId,
sh.SchId, sslab.PurQty.label('PQ'),
sslab.DiscPer.label('DP'),
sslab.FlatAmt.label('FA')).join(sh).join(dr, and_(dr.DistCode==su.DistCode, dr.RtrCode==su.RtrCode)).join(sslab,and_(su.SlabId==sslab.SlabId, sh.SchId==sslab.SchId)).group_by(su.DistCode,dr.RtrId, su.RtrCode, su.InvoiceNo, su.SlabId, sh.SchId, sslab.DiscPer, sslab.FlatAmt, sslab.PurQty).subquery()
Обратите внимание на group_by в конце. Работал как шарм. работает менее чем за минуту.