Hello,
I am using the script below to spawn coins to a target Vector3. The issue arises with different screen sizes.
How to convert the target Vector3 to Transform of the target? So that different screen sizes do not represent an issue anymore?
using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using UnityEngine;
using UnityEngine.Pool;
using UnityEngine.TextCore.Text;
using UnityEngine.UI;
using static UnityEngine.GraphicsBuffer;
public class CoinController : MonoBehaviour
{
[SerializeField] private GameObject PileOfCoinsParent;
[SerializeField] private Text Counter;
[SerializeField] private Vector3[] InitialPos;
[SerializeField] private Quaternion[] InitialRotation;
[SerializeField] private int coinsNumber;
void Start()
{
InitialPos = new Vector3[coinsNumber];
InitialRotation = new Quaternion[coinsNumber];
for (int i = 0; i < PileOfCoinsParent.transform.childCount; i++)
{
InitialPos = PileOfCoinsParent.transform.GetChild(i).position;
InitialRotation = PileOfCoinsParent.transform.GetChild(i).rotation;
}
}
private void Reset()
{
for (int i = 0; i < PileOfCoinsParent.transform.childCount; i++)
{
PileOfCoinsParent.transform.GetChild(i).position = InitialPos;
PileOfCoinsParent.transform.GetChild(i).rotation = InitialRotation;
}
}
public void SpawnCoins( int coinsNumber)
{
Reset();
var delay = 1f;
PileOfCoinsParent.SetActive(true);
for (int i = 0; i < PileOfCoinsParent.transform.childCount; i++)
{
PileOfCoinsParent.transform.GetChild(i).DOScale(endValue: .8f, duration: 0.3f).SetDelay(delay).SetEase(Ease.OutBack);
PileOfCoinsParent.transform.GetChild(i). GetComponent<RectTransform>().DOAnchorPos(endValue: new Vector2(-386f, 493f), .5f).SetDelay(delay +.5f).SetEase(Ease.OutBack);
PileOfCoinsParent.transform.GetChild(i).DORotate(Vector3.zero, .5f).SetDelay(delay + .5f).SetEase(Ease.Flash);
PileOfCoinsParent.transform.GetChild(i).DOScale(endValue: 0f, duration: 0.3f).SetDelay(delay + 1.8f).SetEase(Ease.OutBack);
delay += 0.1f;
}
}
}