我正在使用Unity中的2D Sprites进行2D工厂模拟。植物表示为圆形精灵。我想要做的是增加精灵的半径,并让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;
}
答案 0 :(得分:0)
我发现CircleCollider2D的半径随着精灵而增加,这意味着我不必自己改变对撞机的半径。