Answers
There’s some room for interpretation within the question, so I’ll give two possible solutions for it.
This will send out the objects towards the objects. An extra bit of code should be added to determine how many you’d like to spawn depending on the distance to the player. (Eases are set to Linear)
Also, technically the “Numbers” aren’t needed, just assumed I would be expanding the system more.
{"data":{"behavior":{"v":"2","nodes":[{"inputCount":3,"outputCount":1,"name":"Global","behaviorType":"logic.logic.Global","x":-180,"y":-64,"group":"2c65bc40ccecfb45","id":"2c668d5c9713bf43","tag":"Object 2 X:Number","version":2,"dataType":2},{"inputCount":3,"outputCount":1,"name":"Global","behaviorType":"logic.logic.Global","x":-180,"y":144,"group":"2c65bc40ccecfb45","id":"2c668dd7dc6abe4e","tag":"Object 2 Y:Number","version":2,"dataType":2},{"inputCount":1,"outputCount":1,"name":"Extractor","behaviorType":"logic.properties.Extractor","x":0,"y":-160,"group":"2c65bc40ccecfb45","id":"2c66c879c04dec4b","targetId":0,"prop":"x","version":2},{"inputCount":1,"outputCount":1,"name":"Extractor","behaviorType":"logic.properties.Extractor","x":0,"y":48,"group":"2c65bc40ccecfb45","id":"2c66c8e50b9fd040","targetId":0,"prop":"y","version":2},{"inputCount":6,"outputCount":2,"name":"Ease","behaviorType":"logic.logic.Ease2","x":180,"y":-160,"group":"2c65bc40ccecfb45","id":"2c6ba58158897247","duration":3,"from":0,"to":100,"easeFunc":"Linear","easeType":0,"smartRot":false},{"inputCount":6,"outputCount":2,"name":"Ease","behaviorType":"logic.logic.Ease2","x":180,"y":48,"group":"2c65bc40ccecfb45","id":"2c6ba5efd838334a","duration":3,"from":0,"to":100,"easeFunc":"Linear","easeType":0,"smartRot":false},{"inputCount":3,"outputCount":1,"name":"Number","behaviorType":"logic.logic.Value","x":0,"y":144,"group":"2c65bc40ccecfb45","id":"2c6bb9ebfef8bc47","startVal":0,"roundMode":1},{"inputCount":3,"outputCount":1,"name":"Number","behaviorType":"logic.logic.Value","x":0,"y":-64,"group":"2c65bc40ccecfb45","id":"2c6bba61695c7d40","startVal":0,"roundMode":1},{"inputCount":3,"outputCount":1,"name":"Spawn","behaviorType":"logic.components.Spawn2","x":450,"y":48,"group":"2c65bc40ccecfb45","id":"2c6cd3dfcc07f14a","entityClassId":15364132,"spawnX":0,"spawnY":0},{"delay":5,"count":6,"version":2,"inputCount":3,"outputCount":1,"name":"Timer","behaviorType":"logic.triggers.Timer","x":180,"y":176,"group":"2c65bc40ccecfb45","id":"2c6ce9d86f698142"},{"inputCount":0,"outputCount":2,"name":"Keyboard","behaviorType":"logic.triggers.Keyboard","x":-180,"y":48,"group":"2c65bc40ccecfb45","id":"2c6737f6e205414e","keyCode":32}],"links":[{"input_id":"2c6bba61695c7d40i0","output_id":"2c668d5c9713bf43o0"},{"input_id":"2c6bb9ebfef8bc47i0","output_id":"2c668dd7dc6abe4eo0"},{"input_id":"2c66c879c04dec4bi0","output_id":"2c6737f6e205414eo0"},{"input_id":"2c6ba58158897247i1","output_id":"2c66c879c04dec4bo0"},{"input_id":"2c66c8e50b9fd040i0","output_id":"2c6737f6e205414eo0"},{"input_id":"2c6ba5efd838334ai1","output_id":"2c66c8e50b9fd040o0"},{"input_id":"2c6ba58158897247i1","output_id":"2c66c879c04dec4bo0"},{"input_id":"2c6ba58158897247i2","output_id":"2c6bba61695c7d40o0"},{"input_id":"2c6ba58158897247i3","output_id":"2c6bba61695c7d40o0"},{"input_id":"2c6cd3dfcc07f14ai0","output_id":"2c6ba58158897247o0"},{"input_id":"2c6ba5efd838334ai1","output_id":"2c66c8e50b9fd040o0"},{"input_id":"2c6ba5efd838334ai2","output_id":"2c6bb9ebfef8bc47o0"},{"input_id":"2c6ba5efd838334ai3","output_id":"2c6bb9ebfef8bc47o0"},{"input_id":"2c6cd3dfcc07f14ai1","output_id":"2c6ba5efd838334ao0"},{"input_id":"2c6bb9ebfef8bc47i0","output_id":"2c668dd7dc6abe4eo0"},{"input_id":"2c6bb9ebfef8bc47i1","output_id":"2c6737f6e205414eo0"},{"input_id":"2c6ba5efd838334ai2","output_id":"2c6bb9ebfef8bc47o0"},{"input_id":"2c6ba5efd838334ai3","output_id":"2c6bb9ebfef8bc47o0"},{"input_id":"2c6ce9d86f698142i0","output_id":"2c6bb9ebfef8bc47o0"},{"input_id":"2c6bba61695c7d40i0","output_id":"2c668d5c9713bf43o0"},{"input_id":"2c6bba61695c7d40i1","output_id":"2c6737f6e205414eo0"},{"input_id":"2c6ba58158897247i2","output_id":"2c6bba61695c7d40o0"},{"input_id":"2c6ba58158897247i3","output_id":"2c6bba61695c7d40o0"},{"input_id":"2c6cd3dfcc07f14ai0","output_id":"2c6ba58158897247o0"},{"input_id":"2c6cd3dfcc07f14ai1","output_id":"2c6ba5efd838334ao0"},{"input_id":"2c6cd3dfcc07f14ai2","output_id":"2c6ce9d86f698142o0"},{"input_id":"2c6ce9d86f698142i0","output_id":"2c6bb9ebfef8bc47o0"},{"input_id":"2c6cd3dfcc07f14ai2","output_id":"2c6ce9d86f698142o0"},{"input_id":"2c66c879c04dec4bi0","output_id":"2c6737f6e205414eo0"},{"input_id":"2c6bba61695c7d40i1","output_id":"2c6737f6e205414eo0"},{"input_id":"2c66c8e50b9fd040i0","output_id":"2c6737f6e205414eo0"},{"input_id":"2c6bb9ebfef8bc47i1","output_id":"2c6737f6e205414eo0"}]}}}
Then I realized that the first solution I thought of probably wasn’t intentional. I’m assuming JR wanted some like in WITW, so it spawns along that line for a preset distance.
Just a pretty simple thing, surprised this is Expert, it’s decently easy if you know basic geometry.
Also technically (wouldn’t recommend) you can do some funky stuff to loop the expression back on itself and expand the expression, and that would remove the need for the “Distance” expression. But again, wouldn’t recommend as there is basically no benefit in this case and is just unneeded extra time to figure it out.
Expression
C+Math.cos(A*Math.PI/180)*B
// C = Enemy X/Y
// A = Angle (Math.PI/180 converts to radians)
// B = The distance between "spikes"
{"data":{"behavior":{"v":"2","nodes":[{"inputCount":3,"outputCount":1,"name":"Global","behaviorType":"logic.logic.Global","x":-270,"y":-80,"group":"2c65bc40ccecfb45","id":"2c75e7b817ad7543","tag":"Object 2 Y:Number","version":2,"dataType":2},{"inputCount":3,"outputCount":1,"name":"Global","behaviorType":"logic.logic.Global","x":-270,"y":-176,"group":"2c65bc40ccecfb45","id":"2c75e8394c1d1f4c","tag":"Object 2 X:Number","version":2,"dataType":2},{"inputCount":0,"outputCount":2,"name":"Keyboard","behaviorType":"logic.triggers.Keyboard","x":-270,"y":112,"group":"2c65bc40ccecfb45","id":"2c767dc7ea224349","keyCode":32},{"expression":"C+Math.cos(A*Math.PI/180)*B","default0":0,"default1":0,"default2":0,"default3":0,"default4":0,"default5":0,"params":3,"version":2,"tag":"X Position","inputCount":4,"outputCount":1,"name":"Expression","behaviorType":"logic.logic.Expression","x":270,"y":-176,"group":"2c65bc40ccecfb45","id":"2c76cb26ef72ab4f","notes":"Adjusts X position based on the angle to the player","n_o":1},{"expression":"C+Math.sin(A*Math.PI/180)*B","default0":0,"default1":0,"default2":0,"default3":0,"default4":0,"default5":0,"params":3,"version":2,"tag":"Y Position","inputCount":4,"outputCount":1,"name":"Expression","behaviorType":"logic.logic.Expression","x":270,"y":16,"group":"2c65bc40ccecfb45","id":"2c76d7c1b2628f47","notes":"Adjusts X position based \non the angle to the player","n_o":1},{"expression":"A+48","default0":0,"default1":0,"default2":0,"default3":0,"default4":0,"default5":0,"params":1,"version":2,"tag":"Distance","inputCount":2,"outputCount":1,"name":"Expression","behaviorType":"logic.logic.Expression","x":90,"y":112,"group":"2c65bc40ccecfb45","id":"2c77309ebf05c649"},{"inputCount":2,"outputCount":1,"name":"PointAt","behaviorType":"logic.components.PointAt","x":90,"y":-176,"group":"2c65bc40ccecfb45","id":"2c77901db8961545","skipRot":true},{"inputCount":3,"outputCount":1,"name":"Number","behaviorType":"logic.logic.Value","x":-90,"y":-176,"group":"2c65bc40ccecfb45","id":"2c77a4c821479e40","notes":"Just so the angle is not constantly updated","n_o":1,"startVal":0,"tag":"Player X","roundMode":1},{"inputCount":3,"outputCount":1,"name":"Number","behaviorType":"logic.logic.Value","x":-90,"y":-80,"group":"2c65bc40ccecfb45","id":"2c77a68d5263434a","startVal":0,"tag":"Player Y","roundMode":1},{"delay":1,"count":10,"version":2,"inputCount":3,"outputCount":1,"name":"Timer","behaviorType":"logic.triggers.Timer","x":-90,"y":112,"group":"2c65bc40ccecfb45","id":"2c78a73aa9fc1346"},{"inputCount":3,"outputCount":1,"name":"Spawn","behaviorType":"logic.components.Spawn2","x":450,"y":-80,"group":"2c65bc40ccecfb45","id":"2c7bb48a148e5742","entityClassId":15364132,"spawnX":0,"spawnY":0},{"inputCount":1,"outputCount":1,"name":"Extractor","behaviorType":"logic.properties.Extractor","x":90,"y":-80,"group":"2c65bc40ccecfb45","id":"2c7c4bbf45d7b042","targetId":0,"prop":"x","version":2},{"inputCount":1,"outputCount":1,"name":"Extractor","behaviorType":"logic.properties.Extractor","x":90,"y":16,"group":"2c65bc40ccecfb45","id":"2c7c5ce2b56de74f","targetId":0,"prop":"y","version":2}],"links":[{"input_id":"2c77a68d5263434ai0","output_id":"2c75e7b817ad7543o0"},{"input_id":"2c77a4c821479e40i0","output_id":"2c75e8394c1d1f4co0"},{"input_id":"2c77a4c821479e40i1","output_id":"2c767dc7ea224349o0"},{"input_id":"2c77a68d5263434ai1","output_id":"2c767dc7ea224349o0"},{"input_id":"2c78a73aa9fc1346i0","output_id":"2c767dc7ea224349o0"},{"input_id":"2c77309ebf05c649i1","output_id":"2c767dc7ea224349o0"},{"input_id":"2c76cb26ef72ab4fi0","output_id":"2c77901db8961545o0"},{"input_id":"2c76cb26ef72ab4fi1","output_id":"2c77309ebf05c649o0"},{"input_id":"2c76cb26ef72ab4fi2","output_id":"2c7c4bbf45d7b042o0"},{"input_id":"2c76cb26ef72ab4fi3","output_id":"2c77309ebf05c649o0"},{"input_id":"2c7bb48a148e5742i0","output_id":"2c76cb26ef72ab4fo0"},{"input_id":"2c76d7c1b2628f47i0","output_id":"2c77901db8961545o0"},{"input_id":"2c76d7c1b2628f47i1","output_id":"2c77309ebf05c649o0"},{"input_id":"2c76d7c1b2628f47i2","output_id":"2c7c5ce2b56de74fo0"},{"input_id":"2c76d7c1b2628f47i3","output_id":"2c77309ebf05c649o0"},{"input_id":"2c7bb48a148e5742i1","output_id":"2c76d7c1b2628f47o0"},{"input_id":"2c7bb48a148e5742i2","output_id":"2c76d7c1b2628f47o0"},{"input_id":"2c77309ebf05c649i0","output_id":"2c77309ebf05c649o0"},{"input_id":"2c77309ebf05c649i1","output_id":"2c78a73aa9fc1346o0"},{"input_id":"2c77309ebf05c649i1","output_id":"2c767dc7ea224349o0"},{"input_id":"2c76cb26ef72ab4fi1","output_id":"2c77309ebf05c649o0"},{"input_id":"2c76cb26ef72ab4fi3","output_id":"2c77309ebf05c649o0"},{"input_id":"2c76d7c1b2628f47i1","output_id":"2c77309ebf05c649o0"},{"input_id":"2c76d7c1b2628f47i3","output_id":"2c77309ebf05c649o0"},{"input_id":"2c77309ebf05c649i0","output_id":"2c77309ebf05c649o0"},{"input_id":"2c77901db8961545i0","output_id":"2c77a4c821479e40o0"},{"input_id":"2c77901db8961545i1","output_id":"2c77a68d5263434ao0"},{"input_id":"2c76cb26ef72ab4fi0","output_id":"2c77901db8961545o0"},{"input_id":"2c76d7c1b2628f47i0","output_id":"2c77901db8961545o0"},{"input_id":"2c77a4c821479e40i0","output_id":"2c75e8394c1d1f4co0"},{"input_id":"2c77a4c821479e40i1","output_id":"2c767dc7ea224349o0"},{"input_id":"2c77901db8961545i0","output_id":"2c77a4c821479e40o0"},{"input_id":"2c7c4bbf45d7b042i0","output_id":"2c77a4c821479e40o0"},{"input_id":"2c77a68d5263434ai0","output_id":"2c75e7b817ad7543o0"},{"input_id":"2c77a68d5263434ai1","output_id":"2c767dc7ea224349o0"},{"input_id":"2c77901db8961545i1","output_id":"2c77a68d5263434ao0"},{"input_id":"2c7c5ce2b56de74fi0","output_id":"2c77a68d5263434ao0"},{"input_id":"2c78a73aa9fc1346i0","output_id":"2c767dc7ea224349o0"},{"input_id":"2c77309ebf05c649i1","output_id":"2c78a73aa9fc1346o0"},{"input_id":"2c7bb48a148e5742i0","output_id":"2c76cb26ef72ab4fo0"},{"input_id":"2c7bb48a148e5742i1","output_id":"2c76d7c1b2628f47o0"},{"input_id":"2c7bb48a148e5742i2","output_id":"2c76d7c1b2628f47o0"},{"input_id":"2c7c4bbf45d7b042i0","output_id":"2c77a4c821479e40o0"},{"input_id":"2c76cb26ef72ab4fi2","output_id":"2c7c4bbf45d7b042o0"},{"input_id":"2c7c5ce2b56de74fi0","output_id":"2c77a68d5263434ao0"},{"input_id":"2c76d7c1b2628f47i2","output_id":"2c7c5ce2b56de74fo0"}]}}}