- Home /
Question by
behdadsoft · Oct 22, 2017 at 07:54 AM ·
vector3.movetowards
Vector3.MoveTowards Problem
Hi.
I wrote below code for MoveTowards coins to player that work very well. but problem is when coins come to player and if i try to change player position, coins don't MoveTowards to new player position. anyone know how can fix this problem?
if (Magnet == true)
{
if (Vector3.Distance(player.transform.position, EachCoin.transform.position) < MagnetDistance)
{
EachCoin.position = Vector3.MoveTowards(EachCoin.transform.position, player.transform.position, Time.deltaTime * MoveCoinSpeed);
}
}
Thanks.
Comment
I think you have forgotten to call the transform
: EachCoin.transform.position = ...
what Hellium said. Also, where's this if statement? It want's to be some where it can update. You may want to consider caching your transforms , for good practice, it's a small optimization.
private Transform myTransform;
void start()
{
myTransform = this.transform;
}
void update()
{
myTransform.position = new Vector3(1f,1f,1f);//example
}
this is my complete code for $$anonymous$$oveToward coin to player, but problem is also exists.
Transform player;
Transform EachCoin;
int $$anonymous$$axCoin = 25;
int Gap = 50;
float $$anonymous$$agnetDistance = 30f;
float $$anonymous$$oveCoinSpeed = 20f;
void Awake()
{
player = GameObject.Find ("Player").transform;
}
void Start ()
{
// Create First Coins
for (int i = 0; i <= $$anonymous$$axCoin; i++)
{
GameObject coin = Instantiate((GameObject) Resources.Load("Prefabs/CoinPack", typeof(GameObject)));
coin.transform.position = new Vector3(0, 0.573f, player.transform.position.z - transform.position.z + (Gap * i));
}
}
void Update()
{
GameObject CoinPack = GameObject.FindGameObjectWithTag("CoinPack");
CoinChildCount = CoinPack.transform.childCount;
for (int i = 0; i < CoinChildCount; i++)
{
if (CoinPack.gameObject != null)
{
EachCoin = CoinPack.transform.GetChild(i);
if ($$anonymous$$agnet == true)
{
if (Vector3.Distance(player.transform.position, EachCoin.transform.position) < $$anonymous$$agnetDistance && EachCoin.transform.position.z > player.transform.position.z)
{
EachCoin.position = Vector3.$$anonymous$$oveTowards(EachCoin.transform.position, player.transform.position, Time.deltaTime * $$anonymous$$oveCoinSpeed);
}
}
}
}
}