質問: CGVectorMake(0, 0) /ここでエラーがでます/ azarashi!.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 30)) } ### 試したこと 課題に対してアプローチしたことを記載してください Optionalが原因だということが検索して調べたら判りました。 ### 補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報
回答: まず基本として、このようなエラーが出た時のデバッグ方法については を参考にしてください。 で「Optionalが原因だということが検索して調べたら判りました」ということは、おそらく 「fatal error: unexpectedly found nil while unwrapping an Optional value」 というエラーメッセージがOutputウインドウに表示されたのだろうと思います。 であれば、そのエラーが発生してデバッガーで停止している状態で変数表示ウインドウや変数出力コマンド等で変数の値を出力してnilになっている変数がないか確認してください。 今回は、それを確認すればazarashiという変数がnilであることがわかると思います。 azarashiがnilだということは、それを格納する処理`let azarashi = childNodeWithName("azarashi")`の`childNodeWithName("azarashi")`がnilを返してきた、つまりazarashiというノード名を持つノードが見つからなかったということです なぜazarashiノードを見つけられなかったのかを調べるために、基本的なノード登録処理とazarashiの登録処理を調べて、必要な処理が行われているか確認してください。 基本的なノード登録処理は とかが、あなたの処理とよく似ていて参考になると思います。 すると、このサイトの説明ではSKSpriteNodeのnameプロパティにノード名を登録しているのに、あなたのazarashiには"azarashi"という名前を登録してないことがわかります。 つまり、`let azarashi = SKSpriteNode(imageNamed: "azarashi")`でazarashiを作成したら、 `azarashi.name = "azarashi"` でノード名を登録する必要があるということです。 (ちなみにimageNamed:に指定している"azarashi"はノード名ではなく、ノードの画像を格納している画像ファイル名です。) これを追記すれば、`childNodeWithName("azarashi")`でazarashiがちゃんと検索できるようになり、とりあえず今のエラーは解消されると思います。