保持CircleCollider2D与精灵Unity保持一致

时间:2016-10-09 10:14:25

标签: c# unity5

我正在使用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;
}

1 个答案:

答案 0 :(得分:0)

我发现CircleCollider2D的半径随着精灵而增加,这意味着我不必自己改变对撞机的半径。