protected override void MoveUpdate() { if (Vector2.SqrMagnitude(moveUnit) > UnityExtensions.ThresholdPosition) { if (Vector2.SqrMagnitude(targetPosition - (Vector2)transform.position) > UnityExtensions.ThresholdPosition) { bezierTime += Time.deltaTime / Vector2.Distance(startPosition, targetPosition) * Config.Speed; if (bezierTime > 1) { bezierTime = 0; } transform.position = BezierUtils.Bezier2(startPosition, BezierUtils.ControlPoint(startPosition, targetPosition), targetPosition, bezierTime); //linear moving. can be used for testing // transform.position = new Vector2(transform.position.x + moveUnit.x * Time.deltaTime, // transform.position.y + moveUnit.y * Time.deltaTime); transform.Rotate(Vector3.forward, Config.RotateParameter * Time.deltaTime * 100); } else { // todo при любом кидании уничтожается - плохо Destroy(); } } }