2016-10-09 6 views
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; 
} 
+0

コライダーとスプライトに同じスケーリングを使用する必要があります。 Btwあなたは完全なコードを投稿しましたか?この例では、「scaledRadius」はまったく使用しません。 –

+0

それはスプライトのサイズを増やすための完全なコードです。 scaledRadiusは、私がそれを必要としなかったので、削除するのを忘れたものでした。両方に同じスケーリングを使用するにはどうすればよいですか? CircleCollider2Dをスプライトにフィットさせるには、コライダーの半径を小さくしてスプライトのスケーリングを大きくする必要があります。私の場合、スプライトは100のスケーリング(x軸とy軸の両方で)を行いますが、コライダーの半径は0.09に設定されています。 – martin36

答えて

関連する問題