Transform.Position
может одновременно манипулировать только одним игровым объектом, если только вы не группируете другие объекты под этим Transform
. Но в реальности только GameObject будет двигаться, а остальные будут двигаться только потому, что они сгруппированы в одну иерархию, поэтому из-за этого многие ваши вирусы будут go закадровыми.
Так что если бы я был вами, я бы просто вставьте те же 20 префабов на экран. Я полагаю, что вас беспокоит производительность, которая в этом случае незначительна, однако, если это странное требование, вы можете сделать это альтернативно.
Пометьте все свои объекты Virus GameObject с тегом "Вирусы" или сделайте список общедоступным c и назначьте их непосредственно из редактора, затем используйте скрипт ниже
public class PingPongEffect : MonoBehaviour
{
public float speed = 9.0f;
List<Transform> viruses = new List<Transform>();
void Awake()
{
var virusGameObjects = GameObject.FindGameObjectsWithTag("Viruses");
foreach(var virusGameObject in virusGameObjects)
{
viruses.Add(virusGameObject.transform);
}
}
void Update()
{
foreach(var virusTransform in viruses)
{
virusTransform.position = new Vector3(Mathf.PingPong(Time.time * speed, 1920),
virusTransform.position.y, virusTransform .position.z);
virusTransform.position = new Vector3(virusTransform .position.x,
Mathf.PingPong(Time.time * speed, 1080), virusTransform .position.z);
}
}
}