private BoxRestrictions BoxBoundaries(BoxParts part) { switch (part) { case BoxParts.Upper: return(new BoxRestrictions(this.Left, this.Top, this.Width, this.Height / 2.0)); case BoxParts.Lower: return(new BoxRestrictions(this.Left, this.YCenter, this.Width, this.Height / 2.0)); case BoxParts.Left: return(new BoxRestrictions(this.Left, this.Top, this.Width / 2.0, this.Height)); case BoxParts.Right: return(new BoxRestrictions(this.XCenter, this.Top, this.Width / 2.0, this.Height)); default: return(null); } }
} //collisionEnter2d void OnExplode() { Destroy(gameObject); var trans = transform; for (int i = 0; i < 5; i++) { //trans.TransformPoint(randomX,randomY,0); var temp = trans.position; temp.x += (0.5f * Random.Range(-1, 1)); //temp.y += (0.5f * Random.Range(-1,1)); BoxParts clone = Instantiate(bodyParts, temp, Quaternion.identity) as BoxParts; // adding force to sideways clone.GetComponent <Rigidbody2D>().AddForce(Vector3.right * Random.Range(-50, 50)); //adding force to up clone.GetComponent <Rigidbody2D>().AddForce(Vector3.up * Random.Range(50, 300)); } //loop of explode } //onexplode
} // gameover void DieAndExplode() { if (isSoundOn) { AudioSource.PlayClipAtPoint(dieSoundClip, transform.position); } Destroy(gameObject); var trans = transform; for (int i = 0; i < 7; i++) { //trans.TransformPoint(randomX,randomY,0); var temp = trans.position; temp.x += (0.5f * Random.Range(-1, 1)); //temp.y += (0.5f * Random.Range(-1,1)); BoxParts clone = Instantiate(bodyParts, temp, Quaternion.identity) as BoxParts; // adding force to sideways clone.GetComponent <Rigidbody2D>().AddForce(Vector3.right * Random.Range(-50, 50)); //adding force to up clone.GetComponent <Rigidbody2D>().AddForce(Vector3.up * Random.Range(50, 300)); } //loop of explode }
private GameObject CreateGenericHelper <BoxT, Contained>( BoxParts <BoxT, Contained> prefab, Vector3 position, Vector3 dimensions, Transform parent) where BoxT : IBoxData <Contained> { BoxParts <BoxT, Contained> instantiated = parent ? Instantiate <BoxParts <BoxT, Contained> >(prefab, parent) : Instantiate <BoxParts <BoxT, Contained> >(prefab, position, Quaternion.identity); instantiated.SetDimensions(dimensions); instantiated.BodyObject.transform.localScale = dimensions; instantiated.BodyObject.transform.localPosition = new Vector3( 0f, dimensions.y / 2f, 0f ); float wallThickness = instantiated.RightWall.transform.localScale.x / 2f; instantiated.RightWall.transform.localPosition = new Vector3( dimensions.x / 2f + wallThickness, dimensions.y / 2f, 0f ); instantiated.RightWall.transform.localScale = new Vector3( instantiated.RightWall.transform.localScale.x, dimensions.y, dimensions.z ); wallThickness = instantiated.LeftWall.transform.localScale.x / 2f; instantiated.LeftWall.transform.localPosition = new Vector3( -dimensions.x / 2f - wallThickness, dimensions.y / 2f, 0f ); instantiated.LeftWall.transform.localScale = new Vector3( instantiated.LeftWall.transform.localScale.x, dimensions.y, dimensions.z ); wallThickness = instantiated.FrontWall.transform.localScale.z / 2f; instantiated.FrontWall.transform.localPosition = new Vector3( 0f, dimensions.y / 2f, -dimensions.z / 2f - wallThickness ); instantiated.FrontWall.transform.localScale = new Vector3( dimensions.x, dimensions.y, instantiated.FrontWall.transform.localScale.z ); wallThickness = instantiated.BackWall.transform.localScale.z / 2f; instantiated.BackWall.transform.localPosition = new Vector3( 0f, dimensions.y / 2f, dimensions.z / 2f + wallThickness ); instantiated.BackWall.transform.localScale = new Vector3( dimensions.x, dimensions.y, instantiated.BackWall.transform.localScale.z ); float floorThickness = instantiated.Floor.transform.localScale.y / 2f; instantiated.Floor.transform.localPosition = new Vector3( instantiated.Floor.transform.localPosition.x, -floorThickness, instantiated.Floor.transform.localPosition.z ); instantiated.Floor.transform.localScale = new Vector3( dimensions.x, instantiated.Floor.transform.localScale.y, dimensions.z ); instantiated.LidObject.transform.localPosition = new Vector3( instantiated.Floor.transform.localPosition.x, dimensions.y, instantiated.Floor.transform.localPosition.z ); instantiated.LidObject.transform.localScale = new Vector3( dimensions.x, instantiated.LidObject.transform.localScale.y, dimensions.z ); instantiated.gameObject.SetActive(true); return(instantiated.gameObject); }