protected void SetSpriteEffectParas(STGSpriteEffect effect, float[] paras) { if (paras.Length == 0) { return; } switch ((int)paras[0]) { // 设置位置,参数为增量 case 1: { float dx = paras[1]; float offsetX = paras[2]; float dy = paras[3]; float offsetY = paras[4]; if (offsetX != 0) { dx += Random.Range(-offsetX, offsetX); } if (offsetY != 0) { dy += Random.Range(-offsetY, offsetY); } float sin = Mathf.Sin(_curRotation * Mathf.Deg2Rad); float cos = Mathf.Cos(_curRotation * Mathf.Deg2Rad); float relX = cos * dx - sin * dy; float relY = sin * dx + cos * dy; effect.SetPosition(_hitPos.x + relX, _hitPos.y + relY); break; } // 设置位置,参数为绝对位置 case 2: { float posX = paras[1]; float offsetX = paras[2]; float posY = paras[3]; float offsetY = paras[4]; if (offsetX != 0) { posX += Random.Range(-offsetX, offsetX); } if (offsetY != 0) { posY += Random.Range(-offsetY, offsetY); } effect.SetPosition(posX, posY); break; } // 设置速度,v,dAngle,acce // 即速度,与当前速度方向的差值,加速度 // dAngle为0则表示当前速度方向 case 3: { float velocity = paras[1]; float angle = _curRotation + paras[2]; float acce = paras[3]; effect.DoStraightMove(velocity, angle); effect.DoAcceleration(acce, angle); break; } // 设置速度,v,angle,acce // 即速度,速度方向,加速度 case 4: { float velocity = paras[1]; float angle = paras[2]; float acce = paras[3]; effect.DoStraightMove(velocity, angle); effect.DoAcceleration(acce, angle); break; } // 图像旋转角度 // dRotationAngle,与当前子弹速度方向的差值 case 5: { float angle = _curRotation + paras[1]; effect.SetRotation(angle); break; } // 图像旋转角度 // angle,指定角度 case 6: { float angle = paras[1]; effect.SetRotation(angle); break; } // 旋转 // omega,角速度 case 7: { float omega = paras[1]; effect.DoRotation(omega, -1); break; } // orderInLayer case 9: { int orderInLayer = (int)paras[1]; effect.SetOrderInLayer(orderInLayer); break; } // 设置alpha case 10: { float alpha = paras[1]; effect.SetSpriteAlpha(alpha); break; } // 透明度渐变 // toAlpha,duration case 11: { float toAlpha = paras[1]; int duration = (int)paras[2]; effect.DoTweenAlpha(toAlpha, duration); break; } // 设置颜色 case 12: { float r = paras[1]; float g = paras[2]; float b = paras[3]; effect.SetSpriteColor(r, g, b); break; } // 设置带alpha的颜色 case 13: { float r = paras[1]; float g = paras[2]; float b = paras[3]; float aValue = paras[4]; effect.SetSpriteColor(r, g, b, aValue); break; } // 设置缩放 // scaleX,scaleY case 15: { float scaleX = paras[1]; float scaleY = paras[2]; effect.SetScale(scaleX, scaleY); break; } // 设置scaleX缩放动画 // toScaleX duration case 16: { float toScaleX = paras[1]; int duration = (int)paras[2]; effect.ChangeWidthTo(toScaleX, duration, InterpolationMode.Linear); break; } // 设置scaleY缩放动画 // toScaleY duration case 17: { float toScaleY = paras[1]; int duration = (int)paras[2]; effect.ChangeHeightTo(toScaleY, duration, InterpolationMode.Linear); break; } // 持续时间 case 30: { int duration = (int)paras[1]; effect.SetExistDuration(duration); break; } } }