private void buildPolygon(int num, float startRatio, float endRatio) { mathUtil.ix = ix; mathUtil.dx = dx; mathUtil.iz = iz; mathUtil.dz = dz; mathUtil.paramA = paramA; mathUtil.paramB = paramB; mathUtil.ratioY = ratioY; var startIndex = startRatio; var point = mathUtil.GetFxPos(startIndex); var index = 0; for (var i = 0; i < num; i++) { var ratio = (float)i / num; // range対応 if (ratio < startRatio) { continue; } else if (ratio > endRatio) { continue; } var start = point; var end = mathUtil.GetFxPos(ratio); // 奥行きの太さ対応 var _lineWidth = ratio * lineWidth; AddPolygon(start, end, _lineWidth, index++, num); point = end; } }
public void UpdateView(float elapsedFromStartTimeSec) { // ヒットまでの割合 var ratio = GetActiveTimeRatio(elapsedFromStartTimeSec); // 直線移動 // const int ix = 360; // const int iy = -905; // const int dx = 300; // var x = ix + dx * (xId % 5); // var y = iy + 1000 * ratio; // var z = 0; // 移動 // view.transform.SetLocalPosition(x, y, z); // 曲線移動 var end = mathUtil.GetFxPos(1 - ratio); var x = end.x + 960; var y = end.y; var z = end.z; // 移動 view.transform.SetLocalPosition(x, y, z); // スケールの調整 var scale = 10 + 90 * (1.0f - ratio); if (scale > 100) { scale = 100; } view.transform.SetLocalScale(scale, scale, scale); // ライン描画 if (lineEffect) { lineEffect.transform.SetParent(panelTransform); lineEffect.transform.localScale = new Vector3(1, 1, 1); lineEffect.transform.localPosition = new Vector3(960, 0, 0); var childRatio = children[0].GetActiveTimeRatio(elapsedFromStartTimeSec); var minRatio = -0.2f; var maxRatio = 1.2f; lineEffect.startRatio = Mathf.Clamp(1 - childRatio, minRatio, maxRatio); lineEffect.endRatio = Mathf.Clamp(1 - ratio, minRatio, maxRatio); lineEffect.lineWidth = 70; lineEffect.ix = (xId - 2) * 320; lineEffect.draw(); } // 横ラインがある場合 if (connecter) { // 移動 var lineEnd = lineMathUtil.GetFxPos(1 - ratio); var lineX = lineEnd.x + 960; var lineY = lineEnd.y; var lineZ = lineEnd.z; connecter.transform.SetLocalPosition(lineX, lineY, lineZ); // スケールの調整 var _ratio = Math.Max(0.0f, ratio); var lineScaleX = 100.0f; if (_ratio > 0.8) { lineScaleX = 100.0f * lineLength * 2.0f * (0.7f + (float)Math.Pow(_ratio, 2.0f)); } else { lineScaleX = 100.0f * lineLength * 2.0f * (1.1f + (float)Math.Pow(_ratio, 2.0f)); } var lineScaleY = scale * 3; var lineScaleZ = scale; connecter.transform.SetLocalScale(lineScaleX, lineScaleY, lineScaleZ); } }