/// <summary> /// Drop an item. /// </summary> /// <param name="item"> item u want to spawn </param> /// <param name="index"> index to know the force this is pushing to. </param> /// <param name="isEven"> is the index even number? </param> /// <param name="isGravity"> do gravity effect. </param> /// <param name="spreadEffect"> do spread effect. </param> /// <param name="rotateDrop"> rotate while dropping. </param> /// <param name="waveEffect"> do wave effect while on the ground. </param> /// <param name="destroyFade"> while picking it up will fade and destroy. </param> private void DropAnItem( JCS_Item item, int index, bool isEven, bool isGravity, bool spreadEffect, bool rotateDrop, bool waveEffect, bool destroyFade) { JCS_Item newItem = (JCS_Item)JCS_Utility.SpawnGameObject( item, this.transform.position, this.transform.rotation); bool isEvenIndex = ((index % 2) == 0) ? true : false; if (isGravity) { JCS_OneJump oj = newItem.gameObject.AddComponent <JCS_OneJump>(); float gapDirection = mSpreadGap; if (isEvenIndex) { gapDirection = -mSpreadGap; } oj.BounceBackfromWall = BounceBackfromWall; float gapForce = 0; if (spreadEffect) { if (isEven) { if (!isEvenIndex) { gapForce = (gapDirection * (index - 1)) + gapDirection; } else { gapForce = (gapDirection * (index)) + gapDirection; } } // if total is odd else { if (isEvenIndex) { gapForce = (gapDirection * (index)); } else { gapForce = (gapDirection * (index)) + gapDirection; } } } float jumpForce = mJumpForce; if (mRandomizeJumpForce) { jumpForce += JCS_Random.Range(-mRandomizeJumpForceForce, mRandomizeJumpForceForce); } oj.DoForce(gapForce, jumpForce, mIncludeDepth); if (rotateDrop) { JCS_ItemRotation irx = newItem.gameObject.AddComponent <JCS_ItemRotation>(); irx.RotateSpeed = JCS_Random.Range(-mRotateSpeed, mRotateSpeed); irx.Effect = true; irx.RotateDirection = JCS_Vector3Direction.FORWARD; // if z axis interact in game if (mIncludeDepth) { // add rotation on y axis. JCS_ItemRotation iry = newItem.gameObject.AddComponent <JCS_ItemRotation>(); iry.RotateSpeed = JCS_Random.Range(-mRotateSpeed, mRotateSpeed); iry.Effect = true; iry.RotateDirection = JCS_Vector3Direction.UP; // add rotation on z axis. JCS_ItemRotation irz = newItem.gameObject.AddComponent <JCS_ItemRotation>(); irz.RotateSpeed = JCS_Random.Range(-mRotateSpeed, mRotateSpeed); irz.Effect = true; irz.RotateDirection = JCS_Vector3Direction.RIGHT; } } } if (waveEffect) { JCS_3DConstWaveEffect cwe = newItem.gameObject.AddComponent <JCS_3DConstWaveEffect>(); cwe.SetObjectType(newItem.GetObjectType()); cwe.Effect = true; } if (destroyFade) { JCS_DestroyObjectWithTime dowt = newItem.gameObject.AddComponent <JCS_DestroyObjectWithTime>(); dowt.FadeTime = mFadeTime; dowt.DestroyTime = mDestroyTime; Renderer[] renderers = newItem.GetComponentsInChildren <Renderer>(); foreach (Renderer rdr in renderers) { JCS_FadeObject fo = rdr.gameObject.AddComponent <JCS_FadeObject>(); dowt.FadeObjects.Add(fo); // set the object type the same. fo.SetObjectType(item.GetObjectType()); fo.UpdateUnityData(); } } }
/// <summary> /// Drop an item. /// </summary> /// <param name="item"> item u want to spawn </param> /// <param name="index"> index to know the force this is pushing to. </param> /// <param name="isEven"> is the index even number? </param> /// <param name="isGravity"> do gravity effect. </param> /// <param name="spreadEffect"> do spread effect. </param> /// <param name="rotateDrop"> rotate while dropping. </param> /// <param name="waveEffect"> do wave effect while on the ground. </param> /// <param name="destroyFade"> while picking it up will fade and destroy. </param> private void DropAnItem( JCS_Item item, int index, bool isEven, bool isGravity, bool spreadEffect, bool rotateDrop, bool waveEffect, bool destroyFade) { JCS_Item jcsi = (JCS_Item)JCS_Utility.SpawnGameObject( item, this.transform.position, this.transform.rotation); bool isEvenIndex = ((index % 2) == 0) ? true : false; if (isGravity) { JCS_OneJump jcsoj = jcsi.gameObject.AddComponent <JCS_OneJump>(); float gapDirection = mSpreadGap; if (isEvenIndex) { gapDirection = -mSpreadGap; } jcsoj.BounceBackfromWall = BounceBackfromWall; float gapForce = 0; if (spreadEffect) { if (isEven) { if (!isEvenIndex) { gapForce = (gapDirection * (index - 1)) + gapDirection; } else { gapForce = (gapDirection * (index)) + gapDirection; } } // if total is odd else { if (isEvenIndex) { gapForce = (gapDirection * (index)); } else { gapForce = (gapDirection * (index)) + gapDirection; } } } float jumpForce = mJumpForce; if (mRandomizeJumpForce) { jumpForce += JCS_Random.Range(-mRandomizeJumpForceForce, mRandomizeJumpForceForce); } jcsoj.DoForce(gapForce, jumpForce, mIncludeDepth); if (rotateDrop) { JCS_ItemRotation jcsir = jcsi.gameObject.AddComponent <JCS_ItemRotation>(); jcsir.RotateSpeed = mRotateSpeed; jcsir.Effect = true; // if z axis interact in game if (mIncludeDepth) { // add one more axis. JCS_ItemRotation jcsir2 = jcsi.gameObject.AddComponent <JCS_ItemRotation>(); jcsir2.RotateSpeed = JCS_Random.Range(-mRotateSpeed, mRotateSpeed); jcsir2.Effect = true; jcsir2.RotateDirection = JCS_Vector3Direction.UP; } } } if (waveEffect) { JCS_3DConstWaveEffect jcscw = jcsi.gameObject.AddComponent <JCS_3DConstWaveEffect>(); jcscw.Effect = true; } if (destroyFade) { JCS_DestroyObjectWithTime jcsao = jcsi.gameObject.AddComponent <JCS_DestroyObjectWithTime>(); jcsao.GetFadeObject().FadeTime = mFadeTime; jcsao.DestroyTime = mDestroyTime; // set the object type the same. jcsao.GetFadeObject().SetObjectType(item.GetObjectType()); jcsao.GetFadeObject().UpdateUnityData(); } }