13番目のパズルがほぼ出来上がった。
このパズルでは、絵の具で複数の線を描いていく。線が交差した場合、後の線は元ある線の色を少し引きずっていく。
複数の色で線を交差させていくと、線の向きや順番で結果が変わっていく。提示されている絵と同じ結果となるよう線を引いていくパズル。
今回のシェーダーは、1つのストロークを1つのマテリアルで処理する。これを実現するためスクリプトでは、ユーザが描画するストロークの色・位置・方向を順番に記録する。そののちどの様に色が混じっているか複数のグラデーションとしてシェーダーに指示する。
全体のロジック出来上がり、最後に、正解の手順となったか判定するところで問題発生。ユーザ操作にしたがって引かれた線の色とむきを順番に記録して、正解パターンと比較すれば良いと考えていたが、そう簡単にはいかなかった。
その原因は、違う手順でも同じ結果となるパターンがあるため。具体的には下記の3つのケースがそれ。
とりあえず、正解パターンについて b,c のケースにならない様に作成した。aについては避けようがないので、1本目の描画は向きを無視する判定とした。