How to make camera feature two objects w/ zoom

so I have two player objects I want to keep in veiw. I can avg. their x positions for where the camera at, plus half the screen, so I set camera at (player1x+player2x)/2+half screen in pixels. but when they go near the egde of the screen, I want it to zoom out.

The “In view” behavior should have negitive buffer, don’t you think?

2 Likes

I’ve done this before in an old game for a school project
Here’s the code I wrote:

{"data":{"behavior":{"v":"2","nodes":[{"inputCount":0,"outputCount":0,"name":"Two person cam","behaviorType":"logic.NodeGroup","x":180,"y":-96,"group":"","id":"f66622218bbc444f","isMenuItem":false},{"inputCount":0,"outputCount":1,"name":"Always","behaviorType":"logic.triggers.Always","x":450,"y":288,"group":"f66622218bbc444f","id":"f666222199aa4244"},{"inputCount":3,"outputCount":1,"name":"Global","behaviorType":"logic.logic.Global","x":630,"y":128,"group":"f66622218bbc444f","id":"f66622236a78df4a","tag":"Player X","dataType":2},{"inputCount":3,"outputCount":1,"name":"Global","behaviorType":"logic.logic.Global","x":630,"y":448,"group":"f66622218bbc444f","id":"f6662224e0e34845","tag":"Player Y","dataType":2},{"expression":"(A+B)/2","default0":0,"default1":0,"default2":0,"default3":0,"default4":0,"default5":0,"params":2,"version":1,"tag":"Center X","inputCount":3,"outputCount":1,"name":"Expression","behaviorType":"logic.logic.Expression","x":900,"y":128,"group":"f66622218bbc444f","id":"f666222635491e4f"},{"expression":"(A+B)/2","default0":0,"default1":0,"default2":0,"default3":0,"default4":0,"default5":0,"params":2,"version":1,"tag":"Center Y","inputCount":3,"outputCount":1,"name":"Expression","behaviorType":"logic.logic.Expression","x":900,"y":448,"group":"f66622218bbc444f","id":"f6662227ff1ad140"},{"inputCount":3,"outputCount":1,"name":"Global","behaviorType":"logic.logic.Global","x":630,"y":320,"group":"f66622218bbc444f","id":"f66622283ec71648","tag":"py2:Number","dataType":2},{"inputCount":3,"outputCount":1,"name":"Global","behaviorType":"logic.logic.Global","x":630,"y":224,"group":"f66622218bbc444f","id":"f66622289613474b","tag":"px2:Number","dataType":2},{"inputCount":1,"outputCount":1,"name":"Alpha","behaviorType":"logic.properties.Alpha","x":810,"y":-32,"group":"f66622218bbc444f","id":"f666222ab0780e47"},{"inputCount":3,"outputCount":1,"name":"Number","behaviorType":"logic.logic.Value","x":630,"y":-32,"group":"f66622218bbc444f","id":"f666222bffb78c40","startVal":0,"tag":null},{"inputCount":0,"outputCount":1,"name":"Once","behaviorType":"logic.triggers.Once","x":450,"y":-32,"group":"f66622218bbc444f","id":"f666222cf945884f","resetOnLevelStart":false},{"inputCount":4,"outputCount":2,"name":"Position","behaviorType":"logic.properties.Position","x":1080,"y":320,"group":"f66622218bbc444f","id":"f666222c7e597f43","pixelUnits":true,"resetVelocity":false},{"inputCount":5,"outputCount":5,"name":"Camera","behaviorType":"logic.components.View","x":1260,"y":0,"group":"f66622218bbc444f","id":"fb82ac64860fd745","parallax":100,"scrollX":true,"scrollY":true,"minLeft":0,"maxRight":100,"top":-100,"bottom":13},{"expression":"b-a","default0":0,"default1":0,"default2":0,"default3":0,"default4":0,"default5":0,"params":2,"version":1,"tag":"","inputCount":3,"outputCount":1,"name":"Expression","behaviorType":"logic.logic.Expression","x":270,"y":224,"group":"fb833aaecd1f2842","id":"fb833ab48ad0b74a"},{"expression":"b-a","default0":0,"default1":0,"default2":0,"default3":0,"default4":0,"default5":0,"params":2,"version":1,"tag":"","inputCount":3,"outputCount":1,"name":"Expression","behaviorType":"logic.logic.Expression","x":270,"y":96,"group":"fb833aaecd1f2842","id":"fb833ab42693b94d"},{"inputCount":0,"outputCount":1,"name":"Always","behaviorType":"logic.triggers.Always","x":-270,"y":64,"group":"fb833aaecd1f2842","id":"fb833ab5f8acfa47"},{"expression":"Math.sqrt(Math.abs(A*A) + Math.abs(B*B))","default0":0,"default1":0,"default2":0,"default3":0,"default4":0,"default5":0,"params":2,"version":1,"tag":"","inputCount":3,"outputCount":1,"name":"Expression","behaviorType":"logic.logic.Expression","x":450,"y":160,"group":"fb833aaecd1f2842","id":"fb833ab6ce9a9042"},{"inputCount":0,"outputCount":1,"name":"Bundle Input","behaviorType":"logic.NodeGroupInput","x":-90,"y":224,"group":"fb833aaecd1f2842","id":"fb833ab892aec44a","portId":"fb833aaecd1f2842i0","tag":"X","dataType":2},{"inputCount":0,"outputCount":1,"name":"Bundle Input","behaviorType":"logic.NodeGroupInput","x":-90,"y":320,"group":"fb833aaecd1f2842","id":"fb833ab846941345","portId":"fb833aaecd1f2842i1","tag":"Y","dataType":2},{"inputCount":1,"outputCount":0,"name":"Bundle Output","behaviorType":"logic.NodeGroupOutput","x":630,"y":160,"group":"fb833aaecd1f2842","id":"fb833ab8ff07bb40","portId":"fb833aaecd1f2842o0","tag":"Pixels","dataType":2},{"inputCount":0,"outputCount":1,"name":"Bundle Input","behaviorType":"logic.NodeGroupInput","x":-90,"y":160,"group":"fb833aaecd1f2842","id":"fb836176ee3c7442","portId":"fb833aaecd1f2842i2","tag":"Y2","dataType":2},{"inputCount":0,"outputCount":1,"name":"Bundle Input","behaviorType":"logic.NodeGroupInput","x":-90,"y":64,"group":"fb833aaecd1f2842","id":"fb8361f3f1866445","portId":"fb833aaecd1f2842i3","tag":"X2","dataType":2},{"inputCount":4,"outputCount":1,"name":"Distance","behaviorType":"logic.NodeGroup","x":900,"y":288,"group":"f66622218bbc444f","id":"fb833aaecd1f2842","isMenuItem":false},{"expression":"120-a/10","default0":0,"default1":0,"default2":0,"default3":0,"default4":0,"default5":0,"params":2,"version":2,"tag":"","inputCount":3,"outputCount":1,"name":"Expression","behaviorType":"logic.logic.Expression","x":1260,"y":192,"group":"f66622218bbc444f","id":"fb83d7fe7f767947"}],"links":[{"input_id":"f66622236a78df4ai1","output_id":"f666222199aa4244o0"},{"input_id":"f6662224e0e34845i1","output_id":"f666222199aa4244o0"},{"input_id":"f666222635491e4fi1","output_id":"f66622236a78df4ao0"},{"input_id":"fb833aaecd1f2842i0","output_id":"f66622236a78df4ao0"},{"input_id":"fb833aaecd1f2842i1","output_id":"f6662224e0e34845o0"},{"input_id":"f6662227ff1ad140i1","output_id":"f6662224e0e34845o0"},{"input_id":"f666222c7e597f43i0","output_id":"f666222635491e4fo0"},{"input_id":"f666222c7e597f43i1","output_id":"f6662227ff1ad140o0"},{"input_id":"fb833aaecd1f2842i2","output_id":"f66622283ec71648o0"},{"input_id":"f6662227ff1ad140i0","output_id":"f66622283ec71648o0"},{"input_id":"f6662227ff1ad140i2","output_id":"f66622283ec71648o0"},{"input_id":"f666222635491e4fi0","output_id":"f66622289613474bo0"},{"input_id":"f666222635491e4fi2","output_id":"f66622289613474bo0"},{"input_id":"fb833aaecd1f2842i3","output_id":"f66622289613474bo0"},{"input_id":"f666222ab0780e47i0","output_id":"f666222bffb78c40o0"},{"input_id":"f666222bffb78c40i1","output_id":"f666222cf945884fo0"},{"input_id":"fb833ab6ce9a9042i1","output_id":"fb833ab48ad0b74ao0"},{"input_id":"fb833ab6ce9a9042i2","output_id":"fb833ab48ad0b74ao0"},{"input_id":"fb833ab6ce9a9042i0","output_id":"fb833ab42693b94do0"},{"input_id":"fb833ab8ff07bb40i0","output_id":"fb833ab6ce9a9042o0"},{"input_id":"fb833ab42693b94di1","output_id":"fb833ab892aec44ao0"},{"input_id":"fb833ab42693b94di2","output_id":"fb833ab846941345o0"},{"input_id":"fb833ab48ad0b74ai1","output_id":"fb833ab846941345o0"},{"input_id":"fb833ab48ad0b74ai2","output_id":"fb833ab846941345o0"},{"input_id":"fb833ab48ad0b74ai0","output_id":"fb836176ee3c7442o0"},{"input_id":"fb833ab42693b94di0","output_id":"fb8361f3f1866445o0"},{"input_id":"fb83d7fe7f767947i0","output_id":"fb833aaecd1f2842o0"},{"input_id":"fb83d7fe7f767947i2","output_id":"fb833aaecd1f2842o0"},{"input_id":"fb82ac64860fd745i4","output_id":"fb83d7fe7f767947o0"}]}}}
2 Likes

is Math.sqrt square root?

And I don’t understand the equation 120-a/10 (A is distance away in pixels)

1 Like

just import the code in

1 Like

i did and it kinda works, but I want to know how it works for later coding.
Also the zooming works until the players reach a certain distance and then it zooms out way more than it needs to