たぶん週刊「今週の進捗」

1週間に勉強したことや実装したことをネタに、週に1回(主に土日に)更新していく予定です。「多分」なので、臨時休刊があってもご海容ください。

プロつく計画5-2:ユニティちゃん迷路を作る(1週目)

やろうとしたこと

プロつく計画5で制作した、ユニティちゃん迷路を、ちゃんとしたゲームとして作り直そうと思いました。
ここでいう「ちゃんとした」というのは、

  • タイトル画面やリザルト画面を作る
  • ヒント機能などの実装

など、「他人が遊ぶもの」としての体裁が整っている事を言います。

結果

Unityを5.5に更新しようと思ったら、それだけで終わった。

まぁそういうこともある。

反省

先週書いた「来週のToDo」を完全に失念していた。

反省が全く活かされないパターンじゃねぇか!

来週のToDo

調べる

以下の項目を調べてpukiwikiにまとめる

  • implement
  • オーバライド
  • LocationListenerクラス
  • requestLocationUpdates()
  • onRequestPermissionResult()
  • method does not override method from its superclass の意味

先週の内容とほぼ同じ。

追記(2/1):それから、プロつく計画6の第一目標として、「緯度・経度情報を表示する」をまずは目指します。

プロつく計画6:ランニング用走行距離アプリを作る(3週目)

なんかまだ3週目って感じがしないんですけど?(間にUnity開発をしていたからでは)

先週からの続き

ええと、先週こんな記事を書きましたね。
zeitungm.hateblo.jp

どうやら問題があったのはrequestLocationUpdates()の第1引数ではなくて第4引数のthisの方で、

Cannot resolve method 'requestLocationUpdates( java.lang.String, int, int, net.zeitungm.measureofroad.MainActivity)'

というエラーが出るのは、
LocationListenerをimplementしてないことが原因のようでした(implementしたら直った)。

情報提供者の@stefafafanさん、@yuhi_asさん、ありがとうございます!

新たな問題

onRequestPermissionResultメソッドをオーバライドしようと思ったら

method does not override method from its superclass

というエラーが出る。
@Override を削除すれば収まるエラーなんだが、それでいいのか?
(そして何故エラーが出るのか?)

来週のToDo

調べる

以下の項目を調べてpukiwikiにまとめる

  • implement
  • オーバライド
  • LocationListenerクラス
  • requestLocationUpdates()
  • onRequestPermissionResult()
  • method does not override method from its superclass の意味

モチベーション維持

Android開発、よくわからないところやつまづくところが多くて、
モチベーション維持のために他の開発を並行する方がいいような気がしてきた。
来週からユニティちゃん迷路の改良もしながらやろうかな?

プロつく計画6:ランニング用走行距離アプリを作る(2週目)

やろうとしたこと

サンプルコードを参考にして、LocationManagerクラスを使ったコードを書いていました。

結果

ダメでした。

どこがダメだったのか

サンプルコードを参考に、次のように書いた

_location_manager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 1000, 50, this);

ら、次のようにエラーが出る。

Cannot resolve method 'requestLocationUpdates( java.lang.String, int, int, net.zeitungm.measureofroad.MainActivity)'

requestLocationUpdates()の第1引数には java.lang.Stringが求められている…らしい?
( LocationManager.GPS_PROVIDER はそうでないのだろうか)

他にもわからなかったところをわからないままにして開発してるし、あまりよくないような気がする。

おまけ

縦の列がズレてイライラビリティ高まる。
f:id:ZeitungM:20170115203341p:plain

デフォルトのシンタックスハイライトで太字がまじるのがよくないのかと思って、違うテーマを適用してみた。
f:id:ZeitungM:20170115203529p:plain

これでよし。

Mesh Collidarの上に乗ったことを検出しようとして上手くいかなかった話

やろうとしたこと

ユニティちゃん迷路で、ユニティちゃんがゴール地点にたどり着いたことを検出するために、
ゴール地点にMesh Collidarを置いて、オブジェクトが上に乗ったことを検出しようとしました。

f:id:ZeitungM:20170108224259p:plain
こんな感じに、赤い平面にMesh Collidarを割り当ててみた。

結果

上手くいかなかった。

考察

もしかしたら当たり判定が多少厳しめなのかも知れないと思ったが、
f:id:ZeitungM:20170108224550p:plain
このくらいモロに当たっていても当たり判定が働かないので、
もしかしたらスクリプトが間違っているのかも知れない

…と思ったので、

f:id:ZeitungM:20170108225647p:plain

こういうシーンを作り、先ほどと同じスクリプトを変更して、
BoxがPlaneの上に落ちたときに自分と相手を破壊するようにしてみた。

結果

f:id:ZeitungM:20170108231657p:plain
BoxもPlaneも壊されたので、今度はちゃんとMesh Collidarは動いているようだ。

仮説

Mesh Collidarには、ある程度面に対して垂直な成分がないと当たり判定が働かない?

改善策

というわけで、ゴールに透明なBoxを浮かせてBox Collidarを持たせておくことで、
ゴール到達を検出できましたとさ。

2017年の『たぶん週刊「今週の進捗について」』

あけましておめでとうございます。
昨年は一度も休まずに週1回以上の更新を完遂致しました。

さて、読者とはてブの数を合わせても2桁に届かないような
過疎ブログでやってどうするのかと言う気もしないでもないですが、
このブログの、自分の中での立ち位置を改めて定めるためにも、
弊ブログ『たぶん週刊「今週の進捗」』の方針について明言しておきます。

自己目的化した進捗報告をしない

つまり「更新するネタがないけど何か書いて更新しなきゃ」をやめておこう、ということです。

理由1:「進捗報告のための進捗」をしかねないため

実際何度かあった…と思います。
「進行中のプロジェクトではまともな進捗はまだ上がってないけど、
 進捗は報告しなきゃならないから、何か今からでも進捗を作らなきゃ」みたいなことが。
まぁそんな状況なら、ブログ更新してるぐらいなら進捗作業をしてた方がいいかな、と。

後は「進捗はしてたけど、あまり大っぴらにはしたくない」時とか。

理由2:ブログの更新が月曜日の予定の障害になりかねないため

こっちも実際、昨年
「日曜日はブログ更新のための時間に充てたいから、月曜日に予定を入れたくない」という状況が何度かありました。
ブログ更新のために実生活を犠牲にするのは本末転倒かな、と。

いいことだけを進捗としない

例えばバグが潰せずに一週間を費やしてしまったときなどは、
躓いている理由を明確にするのも進捗報告ということで。


以上、今年は毎週更新はされないと思いますが、それもまた「ほぼ週刊」の持ち味だと思って
2017年も弊ブログをよろしくお願いいたします。

ユニティちゃん迷路

Unityで迷路を解くゲームを作りました。

f:id:ZeitungM:20161230201532p:plain

このように、迷路の中に唐突に放り込まれたユニティちゃんを操作して、
スタート地点からゴール地点にたどり着くまでの時間を競います。

f:id:ZeitungM:20161230201550p:plain

この赤いマスがゴールです。

迷路は自動生成で、ゲームを開始する度に違う迷路が生成されます。

f:id:ZeitungM:20161230201604p:plain
f:id:ZeitungM:20161230203415p:plain
f:id:ZeitungM:20161230203429p:plain

まぁ、そんなゲームです。

© Unity Technologies Japan/UCL

◯スコットアプリ文化祭に向けて5

マスコットアプリ文化祭への出展に向けて開発しているゲームですが、
最低限パッと見ゲームっぽく見えるようになった、ような気がします。

テトリスで言うなら、落ちてくるブロックを操作して積み上げて
列単位で埋まると消えるけど得点が入らなくて、
消えた列の上にあるブロックも宙に浮いたまま…みたいな状態。

公開方法どうするかなぁ…