読者です 読者をやめる 読者になる 読者になる

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

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

2/6~2/12の進捗

Android Unity プロつく計画5 プロつく計画6

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

やろうとしたこと

(1)調べる
  • LocationListenerインタフェース
  • requestLocationUpdates()
  • onRequestPermissionsResult()
(2)動作テスト

ちゃんと位置情報が取れるかどうか、動作確認する

結果

(1)について

requestLocationUpdates()について調べました。

(2)について

f:id:ZeitungM:20170213000033p:plain
ちゃんと動いてた。
だけど、小数点の位置を揃えたつもりが、フォントのせいかずれてるなぁ。

反省

  • 調べるメソッドをメモするときは、オーバロードされてるとどのメソッドかの確認で手間だから、ちゃんとどのメソッドか特定できる形でメモすること

来週のToDo

第一目標「緯度・経度情報を表示する」は達成できたので、次は
「距離を計測する」を目指します。

  • GPSの緯度経度情報から、距離を計測する方法を調べる
  • 緯度・経度情報を頭幅フォントで表示する
  • 以下について調べる
    • LocationListenerインタフェース
    • onRequestPermissionsResult()

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

やろうとしたこと

まずは、以下のシーン間の遷移を形だけでもやろうと思いました。

  • タイトルシーン
  • メインシーン
  • リザルトシーン

が、素材を使いまわすとしてもまたメインシーンを0から作り直すのはだるいので、
前回作ったものをそのまま今のプロジェクトにインポートすることを試みました。

結果

ここを参考に、以前のプロジェクトからシーンをエクスポートして、無事インポートできました。
blog.k-kansei.com

反省

プロジェクトの素材はちゃんとフォルダ分けしような

来週のToDo

目標:シーン間の遷移を実装する

  • 前述のシーンを作成し、ちゃんとした遷移を実装する

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

Android Java プロつく計画6

さり気なくタイトルを修正した

やろうとしたこと

  • (1)以下の項目の意味を調べてまとめる
    • implement
    • オーバライド
    • LocationListenerクラス
    • requestLocationUpdates()
    • onRequestPermissionsResult()
    • method does not override method from its superclass
  • (2)オーバライドするとエラーが出る原因を調査・解決する

結果

(1)について

取消線で消したものについて、まとめ済みです。

  • implement
  • オーバライド
  • LocationListener
  • requestLocationUpdates()
  • onRequestPermissionsResult()
  • method does not override method from its superclass

(2)について

話は実にシンプルで、
onRequestPermissionsResult() を onRequestPermissionResult() と、Permissionの複数形のsが抜け落ちていただけだった…

反省

オブジェクト指向あたりの知識が足りてないなと改めて思いました。
だがその勉強のために開発の手を止めるわけには行かぬ。
せめて躓いた経験をしっかり血肉にせねば。

来週のToDo

調べる

先週から調べきれなかったことについて調べます。

  • LocationListener (クラスじゃなくてインタフェースだった)
  • requestLocationUpdates()
  • onRequestPermissionsResult()

動作テスト

そろそろ緯度経度情報の取得と表示ができるはず!…多分。
というわけで、そろそろ動作確認をしようと思います。

2017年1月の進捗まとめ

月別まとめ

2017年 1月の進捗まとめです。

zeitungm.hateblo.jp
今年のブログの方針を決めました。
今年は

  • 自己目的化した進捗報告をしない
  • いいことだけを進捗としない

を方針に、毎週更新は努力目標としてやっていこうと思います。

zeitungm.hateblo.jp
タイトルのとおり。
マスコットアプリ文化祭2016で作ったユニティちゃん迷路でつまづいた話です。
実際Mesh Colliderが、面に対して垂直な成分を持ってぶつからないと検知されない仕様なのかは確かではありません。

zeitungm.hateblo.jp
Androidアプリの開発です。
ここでエラーが出た原因は、クラスにインタフェースをimplementsしていないからでした。

zeitungm.hateblo.jp
先週の続きです。
ここでエラーが出た原因は、オーバライドするメソッドの名前をtypoしていたからでした。

zeitungm.hateblo.jp
ユニティちゃん迷路をちゃんとしたゲームとして作り直そうと思いました。
この週はUnityのアップデートだけで終わりました。
あと、先週の反省が活かされない体制であることが発覚しました()

反省

  • プロジェクト内で小さな目標を立てて達成する、を繰り返していけばいいのではないかと思った
  • 今月からこういうのはその月のうちにしような

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

Unity プロつく計画6

やろうとしたこと

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

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

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

結果

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

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

反省

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

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

来週のToDo

調べる

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

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

先週の内容とほぼ同じ。

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

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

Android Java プロつく計画6

なんかまだ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週目)

Android Java プロつく計画6

やろうとしたこと

サンプルコードを参考にして、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の上に乗ったことを検出しようとして上手くいかなかった話

Unity プロつく計画5

やろうとしたこと

ユニティちゃん迷路で、ユニティちゃんがゴール地点にたどり着いたことを検出するために、
ゴール地点に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を持たせておくことで、
ゴール到達を検出できましたとさ。