0
私は、Unityの2Dスプライトを使用して2Dプラントシミュレーションを行っています。植物は循環スプライトとして表される。私がしたいのは、スプライトの半径を広げ、CircleCollider2Dを続けさせることです。彼らはさまざまなスケーリングを持っているので、私は絶対的な増加の代わりに半径の漸増を使用しています。しかし、問題は、衝突半径とスプライト半径の関係が同じであっても、衝突半径がスプライトよりも速く増加することです。ここで CircleCollider2Dをスプライトに揃えて維持Unity
は、サイズが大きくなりコードです:私はCircleCollider2Dの半径が、私はコライダー自身の半径を変更する必要がないことを意味し、スプライトとともに増加することが判明void Grow(GameObject plant)
{
float currentRadius = plant.GetComponent<CircleCollider2D>().radius; //Radius of the collider
float scaledRadius = Mathf.Max(plant.transform.localScale.x, transform.localScale.y); //Radius of the sprite
float radiusIncrease = growthSpeed * Time.deltaTime;
float procIncrease = (currentRadius + radiusIncrease)/currentRadius; //The procuental increase of the radius, need for sprite scaling
plant.GetComponent<CircleCollider2D>().radius *= procIncrease;
Vector3 oldLocalScale = plant.transform.localScale;
Vector3 newLocalScale = new Vector3(oldLocalScale.x * procIncrease, oldLocalScale.y * procIncrease, oldLocalScale.z);
plant.transform.localScale = newLocalScale;
}
コライダーとスプライトに同じスケーリングを使用する必要があります。 Btwあなたは完全なコードを投稿しましたか?この例では、「scaledRadius」はまったく使用しません。 –
それはスプライトのサイズを増やすための完全なコードです。 scaledRadiusは、私がそれを必要としなかったので、削除するのを忘れたものでした。両方に同じスケーリングを使用するにはどうすればよいですか? CircleCollider2Dをスプライトにフィットさせるには、コライダーの半径を小さくしてスプライトのスケーリングを大きくする必要があります。私の場合、スプライトは100のスケーリング(x軸とy軸の両方で)を行いますが、コライダーの半径は0.09に設定されています。 – martin36