29 camObz = Camera35 W = 13.67 int(camObz[Bottom] * H) = 53736 int(camObz[Left] * W) = 1011 int(camObz[Bottom] * H) = 53737 int(camObz[Right] * W) = 1353 int(camObz[Top] * H) = 719
32 camObz.setViewport(int(camObz["Left"] * W), int(camObz["Bottom"] * H), int(camObz["Right"] * W), int(camObz["Top"] * H))
... если происходит обращение к несуществующим элементам, то должно быть сообщение об ошибке ...
... проверьте значения элементов перед вызовом функции ...
35 int(camObz[Left] * W) = 842 int(camObz[Bottom] * H) = 33936 int(camObz[Right] * W) = 1127 int(camObz[Top] * H) = 615
import bge # импортируем модуль BGEfrom bge import logic # импортировать logic из модуля bgeimport math # импортируем модуль Mathfrom mathutils import Vector # из модуля mathutils импортировать Vector print("!!!!!!!!!!! Start ")scene = bge.logic.getCurrentScene() # получить текущую сценуobjList = scene.objects # получить список объектовcont = bge.logic.getCurrentController() # получить текущий контроллерcar = objList["Car"] # получить объект «Car» camDriv = objList["Camera drivera"] # получить камеру большого окна с названием Camera driveraif car["PlayStart"] == False : # если старт игры ещё не был выполнен, то ... scene.active_camera = camDriv # активировать как камеру большого окна Camera drivera camObz = objList["CameraObzora"] # получить камеру CameraObzora для дополнительного окна из objList camLeft = objList["CameraLeft"] # получить камеру CameraLeft для дополнительного окна camRight = objList["CameraRight"] # получить камеру CameraRight для дополнительного окна cam = objList["Camera"] # получить камеру преследования Camera для дополнительного окна car["cameraObz"] = camObz # сохранить в свойство cameraObz значение camObz print("PlayStart == False camObz = ", camObz) logic.globalDict['Time'] = 0 # получить в глобальную переменную Time значение 0 logic.globalDict['StartTime'] = 0 # запомнить время старта logic.globalDict['StPos'] = Vector((0,0,0)) # запомнить стартовую позицию авто logic.globalDict['StOr'] = Vector((0,0,0)) # запомнить стартовую ориентацию авто logic.globalDict['VecCar'] = Vector((0,0,1))# получить в глобальную переменную вектора vecCar значение 0,0,1 W = bge.render.getWindowWidth() / 100 # получить Ширину окна H = bge.render.getWindowHeight() / 100 # получить Высоту окна Wmax = bge.render.getWindowWidth() # получить максимальную Ширину окна Hmax = bge.render.getWindowHeight() # получить максимальную Высоту окна param = camObz["Left"] # получить значение переменной param из объекта свойства obj["Left"] if param == 0: # если param = 0, то ... camObz["Left"] = int((Wmax-2)/W*0.75) # присвоить свойству camObz["Left"] целочисленное значение int((Wmax-2)/W*0.75) camLeft["Left"] = camObz["Left"] # присвоить камере CameraLeft то же значение camRight["Left"] = camObz["Left"] # присвоить камере CameraRight то же значение cam["Left"] = camObz["Left"] # присвоить камере Camera то же значение print("36 camObz[Left] = ", camObz["Left"], " camLeft[Left] = ", camLeft["Left"], " camRight[Left] = ", camRight["Left"], " cam[Left] = ", cam["Left"]) param = camObz["Right"] # получить значение переменной param из объекта свойства camObz["Right"] if param == 0: # если param = 0, то ... camObz["Right"] = int((Wmax-2)/W) # присвоить свойству camObz["Right"] целочисленное значение int((Wmax-2)/W) camLeft["Right"] = camObz["Right"] # присвоить камере CameraLeft то же значение camRight["Right"] = camObz["Right"] # присвоить камере CameraRight то же значение cam["Right"] = camObz["Right"] # присвоить камере Camera то же значение print("43 camObz[Right] = ", camObz["Right"], " camLeft[Right] = ", camLeft["Right"], " camRight[Right] = ", camRight["Right"], " cam[Right] = ", cam["Right"]) param = camObz["Bottom"] # получить значение переменной param из объекта свойства camObz["Bottom"] if param == 0: # если param = 0, то ... camObz["Bottom"] = int((Hmax-2)/H*0.75) # присвоить свойству camObz["Bottom"] целочисленное значение int((Hmax-2)/H*0.75) camLeft["Bottom"] = camObz["Bottom"] # присвоить камере CameraLeft то же значение camRight["Bottom"] = camObz["Bottom"] # присвоить камере CameraRight то же значение cam["Bottom"] = camObz["Bottom"] # присвоить камере Camera то же значение print("50 camObz[Bottom] = ", camObz["Bottom"], " camLeft[Bottom] = ", camLeft["Bottom"], " camRight[Bottom] = ", camRight["Bottom"], " cam[Bottom] = ", cam["Bottom"]) param = camObz["Top"] # получить значение переменной param * H из объекта свойства camObz["Top"] if param == 0: # если param = 0, то ... camObz["Top"] = int((Hmax-2)/H) # присвоить свойству camObz["Top"] целочисленное значение int((Hmax-2)/H) camLeft["Top"] = camObz["Top"] # присвоить камере CameraLeft то же значение camRight["Top"] = camObz["Top"] # присвоить камере CameraRight то же значение cam["Top"] = camObz["Top"] # присвоить камере Camera то же значение print("57 camObz[Top] = ", camObz["Top"], " camLeft[Top] = ", camLeft["Top"], " camRight[Top] = ", camRight["Top"], " cam[Top] = ", cam["Top"]) param = camObz["Focus"] # получить значение переменной param * H из объекта свойства camObz["Top"] if param == 150: # если param = 0, то ... camObz["Focus"] = int(100) # присвоить свойству camObz["Focus"] целочисленное значение int(100) camLeft["Focus"] = camObz["Focus"] # присвоить камере CameraLeft то же значение camRight["Focus"] = camObz["Focus"] # присвоить камере CameraRight то же значение cam["Focus"] = camObz["Focus"] # присвоить камере Camera то же значение print("66 camObz[Focus] = ", camObz["Focus"], " camLeft[Focus] = ", camLeft["Focus"], " camRight[Focus] = ", camRight["Focus"], " cam[Focus] = ", cam["Focus"]) car["PlayStart"] = True # свойству "PlayStart" присвоить значение True означающее проведение начальной установки свойств в соответствии с размером экрана
>> в котором игровые свойства назначены только для камеры "CameraObzora" - у других камер их нет. Вы вполне можете убедиться в этом.... предполагаю что где-то в этом коде ...Кодimport bge # импортируем модуль BGEfrom bge import logic # импортировать logic из модуля bgeimport math # импортируем модуль Mathfrom mathutils import Vector # из модуля mathutils импортировать Vector print("!!!!!!!!!!! Start ")scene = bge.logic.getCurrentScene() # получить текущую сценуobjList = scene.objects # получить список объектовcont = bge.logic.getCurrentController() # получить текущий контроллерcar = objList["Car"] # получить объект «Car» camDriv = objList["Camera drivera"] # получить камеру большого окна с названием Camera driveraif car["PlayStart"] == False : # если старт игры ещё не был выполнен, то ... scene.active_camera = camDriv # активировать как камеру большого окна Camera drivera camObz = objList["CameraObzora"] # получить камеру CameraObzora для дополнительного окна из objList camLeft = objList["CameraLeft"] # получить камеру CameraLeft для дополнительного окна camRight = objList["CameraRight"] # получить камеру CameraRight для дополнительного окна cam = objList["Camera"] # получить камеру преследования Camera для дополнительного окна car["cameraObz"] = camObz # сохранить в свойство cameraObz значение camObz print("PlayStart == False camObz = ", camObz) logic.globalDict['Time'] = 0 # получить в глобальную переменную Time значение 0 logic.globalDict['StartTime'] = 0 # запомнить время старта logic.globalDict['StPos'] = Vector((0,0,0)) # запомнить стартовую позицию авто logic.globalDict['StOr'] = Vector((0,0,0)) # запомнить стартовую ориентацию авто logic.globalDict['VecCar'] = Vector((0,0,1))# получить в глобальную переменную вектора vecCar значение 0,0,1 W = bge.render.getWindowWidth() / 100 # получить Ширину окна H = bge.render.getWindowHeight() / 100 # получить Высоту окна Wmax = bge.render.getWindowWidth() # получить максимальную Ширину окна Hmax = bge.render.getWindowHeight() # получить максимальную Высоту окна param = camObz["Left"] # получить значение переменной param из объекта свойства obj["Left"] if param == 0: # если param = 0, то ... camObz["Left"] = int((Wmax-2)/W*0.75) # присвоить свойству camObz["Left"] целочисленное значение int((Wmax-2)/W*0.75) camLeft["Left"] = camObz["Left"] # присвоить камере CameraLeft то же значение camRight["Left"] = camObz["Left"] # присвоить камере CameraRight то же значение cam["Left"] = camObz["Left"] # присвоить камере Camera то же значение print("36 camObz[Left] = ", camObz["Left"], " camLeft[Left] = ", camLeft["Left"], " camRight[Left] = ", camRight["Left"], " cam[Left] = ", cam["Left"]) param = camObz["Right"] # получить значение переменной param из объекта свойства camObz["Right"] if param == 0: # если param = 0, то ... camObz["Right"] = int((Wmax-2)/W) # присвоить свойству camObz["Right"] целочисленное значение int((Wmax-2)/W) camLeft["Right"] = camObz["Right"] # присвоить камере CameraLeft то же значение camRight["Right"] = camObz["Right"] # присвоить камере CameraRight то же значение cam["Right"] = camObz["Right"] # присвоить камере Camera то же значение print("43 camObz[Right] = ", camObz["Right"], " camLeft[Right] = ", camLeft["Right"], " camRight[Right] = ", camRight["Right"], " cam[Right] = ", cam["Right"]) param = camObz["Bottom"] # получить значение переменной param из объекта свойства camObz["Bottom"] if param == 0: # если param = 0, то ... camObz["Bottom"] = int((Hmax-2)/H*0.75) # присвоить свойству camObz["Bottom"] целочисленное значение int((Hmax-2)/H*0.75) camLeft["Bottom"] = camObz["Bottom"] # присвоить камере CameraLeft то же значение camRight["Bottom"] = camObz["Bottom"] # присвоить камере CameraRight то же значение cam["Bottom"] = camObz["Bottom"] # присвоить камере Camera то же значение print("50 camObz[Bottom] = ", camObz["Bottom"], " camLeft[Bottom] = ", camLeft["Bottom"], " camRight[Bottom] = ", camRight["Bottom"], " cam[Bottom] = ", cam["Bottom"]) param = camObz["Top"] # получить значение переменной param * H из объекта свойства camObz["Top"] if param == 0: # если param = 0, то ... camObz["Top"] = int((Hmax-2)/H) # присвоить свойству camObz["Top"] целочисленное значение int((Hmax-2)/H) camLeft["Top"] = camObz["Top"] # присвоить камере CameraLeft то же значение camRight["Top"] = camObz["Top"] # присвоить камере CameraRight то же значение cam["Top"] = camObz["Top"] # присвоить камере Camera то же значение print("57 camObz[Top] = ", camObz["Top"], " camLeft[Top] = ", camLeft["Top"], " camRight[Top] = ", camRight["Top"], " cam[Top] = ", cam["Top"]) param = camObz["Focus"] # получить значение переменной param * H из объекта свойства camObz["Top"] if param == 150: # если param = 0, то ... camObz["Focus"] = int(100) # присвоить свойству camObz["Focus"] целочисленное значение int(100) camLeft["Focus"] = camObz["Focus"] # присвоить камере CameraLeft то же значение camRight["Focus"] = camObz["Focus"] # присвоить камере CameraRight то же значение cam["Focus"] = camObz["Focus"] # присвоить камере Camera то же значение print("66 camObz[Focus] = ", camObz["Focus"], " camLeft[Focus] = ", camLeft["Focus"], " camRight[Focus] = ", camRight["Focus"], " cam[Focus] = ", cam["Focus"]) car["PlayStart"] = True # свойству "PlayStart" присвоить значение True означающее проведение начальной установки свойств в соответствии с размером экрана
if param == 0: # если param = 0, то ... camObz["Left"] = int((Wmax-2)/W*0.75) # присвоить свойству camObz["Left"] целочисленное значение int((Wmax-2)/W*0.75) camLeft["Left"] = camObz["Left"] # присвоить камере CameraLeft то же значение camRight["Left"] = camObz["Left"] # присвоить камере CameraRight то же значение cam["Left"] = camObz["Left"] # присвоить камере Camera то же значение print("36 camObz[Left] = ", camObz["Left"], " camLeft[Left] = ", camLeft["Left"], " camRight[Left] = ", camRight["Left"], " cam[Left] = ", cam["Left"]) param = camObz["Right"] # получить значение переменной param из объекта свойства camObz["Right"] if param == 0: # если param = 0, то ... camObz["Right"] = int((Wmax-2)/W) # присвоить свойству camObz["Right"] целочисленное значение int((Wmax-2)/W) camLeft["Right"] = camObz["Right"] # присвоить камере CameraLeft то же значение camRight["Right"] = camObz["Right"] # присвоить камере CameraRight то же значение cam["Right"] = camObz["Right"] # присвоить камере Camera то же значение print("43 camObz[Right] = ", camObz["Right"], " camLeft[Right] = ", camLeft["Right"], " camRight[Right] = ", camRight["Right"], " cam[Right] = ", cam["Right"]) param = camObz["Bottom"] # получить значение переменной param из объекта свойства camObz["Bottom"] if param == 0: # если param = 0, то ... camObz["Bottom"] = int((Hmax-2)/H*0.75) # присвоить свойству camObz["Bottom"] целочисленное значение int((Hmax-2)/H*0.75) camLeft["Bottom"] = camObz["Bottom"] # присвоить камере CameraLeft то же значение camRight["Bottom"] = camObz["Bottom"] # присвоить камере CameraRight то же значение cam["Bottom"] = camObz["Bottom"] # присвоить камере Camera то же значение print("50 camObz[Bottom] = ", camObz["Bottom"], " camLeft[Bottom] = ", camLeft["Bottom"], " camRight[Bottom] = ", camRight["Bottom"], " cam[Bottom] = ", cam["Bottom"]) param = camObz["Top"] # получить значение переменной param * H из объекта свойства camObz["Top"] if param == 0: # если param = 0, то ... camObz["Top"] = int((Hmax-2)/H) # присвоить свойству camObz["Top"] целочисленное значение int((Hmax-2)/H) camLeft["Top"] = camObz["Top"] # присвоить камере CameraLeft то же значение camRight["Top"] = camObz["Top"] # присвоить камере CameraRight то же значение cam["Top"] = camObz["Top"] # присвоить камере Camera то же значение print("57 camObz[Top] = ", camObz["Top"], " camLeft[Top] = ", camLeft["Top"], " camRight[Top] = ", camRight["Top"], " cam[Top] = ", cam["Top"]) param = camObz["Focus"] # получить значение переменной param * H из объекта свойства camObz["Top"]
>> Свойства "Left", "Bottom", "Right", "Top" определены мною только для камеры "CameraObzora".... вроде в этом коде описано присвоение и других свойств Left, Right, Bottom, Top? ...
"Как пример, с помощью строки:camRight["Focus"] = int(100)я могу создать игровое свойство для камеры camRight со значением int(100), вы это хотите сказать? "
>> Николай, вы не ответили на мой вопрос:... нет ...
И, всё же, в моём ответе 17
ЦитироватьИ, всё же, в моём ответе 17Убедительная просьба, вставлять перекрёстные ссылки на свои сообщения, если вы их упоминаете, чтобы не искать их по номерам... Допустим так: в моём ответе 17 я в своём Ответе #9Сделать это можно так: