[Unity]Animationをスクリプトから作成する方法

Unityのゲーム画面でマウスをクリックした場所にキャラクターを移動させる機能を実装したいと思い、何か良い方法がないか考えたところ、Animationという機能を利用すれば実現できるかなと思いつきました。

キャラクターの移動となると、動的に移動先が変わるのでスクリプトから制御できると良いなと思ったのですが、普段はUnityのエディタからしか操作したことがなかったので、どうやって実現すれば良いのか分かりませんでした。

今回は、UnityのAnimationをスクリプトから作成する方法をご紹介したいと思います。

準備

まずは、アニメーションを制御するゲームオブジェクトにAnimationコンポーネントをアタッチします。

スクリプトから、Animationコンポーネントを取得します。

// ゲームオブジェクトからAnimationコンポーネントを取得
Animation animation = GetComponent<Animation>();
if (animation == null) {
  animation = gameObject.AddComponent<Animation>();
}

// AnimationClipの作成
Animation clip = new AnimationClip();

AnimationCurveの作成

まずは、AnimationCurveの設定から行っていきます。

この例では、アニメーション対象のオブジェクトに対して、3秒かけてx軸方向に1進める設定を行っています。

AnimationCurve curve = new AnimationCurve(
  new Keyframe(0f, 0f),
  new Keyframe(3f, 1f)
);

// 子オブジェクトの"Cube"を対象
clip.SetCurve("Cube", typeof(Transform), "localPosition.x", curve);

AnimationEventの作成

今回の場合、アニメーション終了時に処理を実行したいと思ったので、イベントを付与したいと思います。

まず、timeにアニメーションが終了する時間を設定します。

そして、設定したタイミングで発火させたい関数の名前をfunctionNameに設定します。

設定したらAnimationClipのAddEventでイベントを追加します。

AnimationEvent evt = new AnimationEvent();
evt.time = 3f;
evt.functionName = "FinishAnimation";

clip.AddEvent(evt);

アニメーションの実行

アニメーションの詳細についてはAnimationClipに設定できたので、あとはAnimationのAddClipでクリップを追加します。

その際に、追加したクリップのアニメーションの名前を付けます。

animation.AddClip(clip, "move");

設定が完了したら、後は先ほど付けた名前を指定してアニメーションを再生すればOKです。

animation.Play("move");

まとめ

Unityでのアニメーションは、基本的にはエディターから操作が可能ですが、動的にデータを変更したい場合にも応用が効きます。

プロジェクトに合わせて使い分けてみると良いかと思います。

一日の計画について

僕は、毎日その日に行うタスクなどを決めて計画を立てています。

ですが、毎日やっていると、計画を立てることが段々と作業的になってしまいます。

そして、何のために計画を立てているのかさえも忘れてしまうようになります。

計画を立てることが作業的になってしまっている場合は、何のために計画を立てているのか常に意識している必要があります。

そして、計画の立て方も、自分のスタイルに合わせて行う方が効果的です。

今回は、僕が計画を立てる際に意識していることや、計画の立て方などをご紹介したいと思います。

計画を立てる意義

目標に向かって進むことができる

計画は、目標を達成させるために行うものです。

行き当たりばったりで行動していては、目標に向かって効率よく進むことができません。

計画した上で行動することによって、目標へと着実に進むことができます。

目標を意識できる

計画は、目標を軸にして立てていくので、毎日計画を立てていれば目標を意識する習慣を身につけることができます。

そのためにも、計画を立てる際は目標を再確認する必要があります。

アイデアが浮かぶ

行き当たりばったりで行動するよりも、計画を立てて試行錯誤していれば、いろんなアイデアが浮かぶこともあります。

例えば、資格試験を控えていて、とりあえずその日はテキストを読む予定でいたけど、試験日を確認してみたら近づいていると気づいたので、「そろそろ問題集に取り掛かった方が良いかな?」という案が思いついたりと、冷静に判断できるきっかけができます。

計画を立てるポイント

一つ上の階層の計画を参考に計画を立てる

僕の場合、「一日の計画」の上層の計画は「一ヶ月計画」となっており、さらに上には「一年計画」、「10年計画」と続いています。

なのでこの場合、「一日の計画」は「一ヶ月計画」を参考に計画を立てます。

一ヶ月計画の目標を達成するために、一日の計画ではどういったタスクを実行すれば良いのか考えます。

タスクを行う理由も考える

計画で決めたタスクに対して、なぜこのタスクを行う必要があるのか、理由を考えます。

そうすることで、本当に実行しなければならないタスクかどうか判断の材料になります。

タスクの優先順位を付ける

タスクを実行する順序を決めます。

目標へ最も近づくであろうタスクはどれか、見定めて優先順位を決めましょう。

この場合、タスクに優先順位の数字を割り振ると良いかと思います。

まとめ

今回は、一日の計画についてご紹介しました。

計画を立てることのメリットを意識し、自分にとって効果的なやり方でしっかり進めていけば、計画も有意義なものとなります。

夢を実現するためにも、しっかりと計画を練って行動して参りましょう。

主体性を持つ

以前勤めていた会社では、仕事に対してのモチベーションがありませんでした。

恐らく、自身の理想のキャリア像を持たないまま仕事を行っていたからだと思います。

仮に自分の目指すキャリアのビジョンが浮かんでいたとして、仕事でどういった行動をすれば良いのでしょうか?

その一つとして、主体的に仕事に取り組むことが挙げられます。

今回は、何事にも主体性を持って取り組んだ方が良いのは何故か、ということについてお話ししたいと思います。

メリット

経験が積める

例えば、勤め先でスタッフの皆が嫌がりそうな責任のある仕事を、自分が引き受けるとします。

すると、様々な壁が立ち塞がり、簡単には乗り越えられないようなものが自身に少なからず降りかかってきます。

それに対して一つずつ立ち向かっていくことによって、経験を積む事ができます。

経験は、今後あらゆる場面で応用することができるのでとても貴重なものとなります。

もし失敗したとしても、フィードバックを受け、どこがいけなかったのか分析して改善することができるので、自身の成長にも繋がります。

チャンスが生まれる

自分から行動することによって、自分にとってプラスとなるような出来事が発生するかもしれません。

例えば、友達から合コンに参加してみないかと誘われたけど、人とワイワイするのが苦手だし、自分は相手にされないだろうし、どうしようか迷っていたけど、思い切って参加したとします。

そして合コンに参加した結果、思っていたよりも楽しく過ごせ、しかも異性の人と連絡先を交換するほど仲良くすることができた。

という展開も案外あったりするので、やってみないと分からないことはよくあります。

周りから信頼される

主体的な行動をすると、周りからの信頼度も変わるかと思います。

例えば、仕事で毎日同じ手順を行う業務があるとします。

それに対して自分から業務の自動化を提案し、面倒ではありますが業務改善を実施します。

すると、周りの人たちの見る目が変わっていき、一目置かれ、頼りにされるようになります。

実践方法

自分から進んで行動する

まずは、体を慣らしていくためにも簡単なことからでも良いので、自分から進んで行動してみましょう。

数をこなしていく内に、必ず成長していけます!

自信を持つ

自信がなければ、初めの一歩を踏むことすらできません。

強気の心を持って挑んでみましょう。

自信が足りないなと感じているのであれば、小さな成功体験をどんどん積んで、自信を付けていくことを心掛けてみて下さい。

前向きに考える

もし失敗してしまったらどうしようとか、ネガティブなことを考えてしまうと、行動を躊躇ってしまって、中々行動に移せなくなって非常にもったいないです。

もし失敗したとしても、何がダメだったのかを考えるきっかけを受けられるので、勉強となって自身を成長させます。

なので、失敗を恐れずに挑戦する姿勢を持ちましょう。

まとめ

今回は、主体性を持って取り組む意義についてご紹介しました。

  • 経験が積める
  • チャンスが生まれる
  • 周りから信頼される

でした。

主体的に行動すると、何かしら大変な思いをすることがあるかと思います。

ですが、それ以上の見返りがある可能性もあるので、ここは一つ積極的に行動してみてはいかがでしょうか。

ツイッターをやる理由

僕は普段ツイッターを利用していますが、始めたての頃は「ツイッターってなにが面白いんだろう?」と疑問に思っていました。

今ではそこそこ使い慣れてきたので、多くの人に使われている理由などが何となく分かってきたような気がします。

今回は、僕が何故ツイッターを活用するようになったのかをご紹介したいと思います。

色々な人と繋がれる

ツイッターを利用すれば、全世界のユーザーと繋がることが可能です。

通常なら自分の住んでいる環境によって会える人というのは制限されてしまいますが、ツイッターを利用すれば住んでいる場所を問わず、遠い人とも簡単に知り合えることが可能になります。

ユーザーのプロフィール欄やツイートを見て、繋がりたいと思う理想の人を探してみるのも面白いかもしれません。

ツイッターをされている人の中には、自分に刺さる有益なツイートをしている人もいるので、他者さんのツイートを見てみるのも中々面白いですよ。

アウトプットができる

アウトプットといえばブログなどでも可能ですが、ツイッターのツイートの内容は「今」にフォーカスしているので、今感じていることや気づいたことを文章として落とし込むスキルが磨けます。

しかも、ブログであれば文字制限がないので一記事書くのに下準備が大変ですが、ツイッターなら文字制限があるので、短い文章でツイートでき、手軽に投稿できるのがメリットですね。

自分を客観視できる

ツイートすると、自身のタイムラインにツイートがどんどん積み重なっていきます。

今までの自身のタイムラインを眺めてみると、自分がどういう思考でどういったことに興味があるのか等が客観的に分析できるようになります。

自分を客観視したい時にはこのタイムラインは便利だなと思います。

まとめ

今回は、僕がツイッターをやる理由についてご紹介しました。

まとめると、

  • 色々な人と繋がれる
  • アウトプットができる
  • 自分を客観視できる

でした。

ツイッター自体は単純なシステムですが、色々考えてみると奥が深いです。

利用価値もあると思いますので、ぜひ利用してみてはいかがでしょうか。

ブログに書き留める

誰でも起こりうる話だと思うのですが、勉強した内容や心に響いたことなどは、時間が経過したり暫く使わなかったりすると、大抵の場合忘れてしまいますよね。

僕の場合、心に響くような情報を仕入れた時は、忘れないようにメモ用紙やメモアプリに書き留めるようにしてました。

ですが、書いたメモが中々読み返されずにそのままずっと放置されて、暫く経った後に見返してみると、当時と違って心が響かなくなってしまっている事があるので、結局ゴミになってしまう、というようなことが多々ありました。

どうしてこのようなメモを残しておいたのか、ということも忘れている事がありますw

そして、書いたメモというのは重要なんじゃないかと思い込んでしまい、中々捨てられなくなってしまいます。

こういうこともあって、現在ではブログに書き留めるように移行しました。

今回は、メモに残しておきたい内容をブログに書き留める理由についてお話ししたいと思います。

メリット

重要性を再認識できる

メモに残すということは、自分がそれほど重要だと感じたから行ったんだと思います。

ですが、書いたメモは他人に見られる事が殆どないので、自分が理解できればどんな書き方でも大丈夫なところがあります。

なので、内容を端折って書いてしまったりすることもよくあるかと思います。

ですが、暫く時間が経ってから見返してみると、何故メモにしてまで残したのか、経緯を思い出すことができません。

その反面、ブログの場合はWebで公開されることになるので、他人に見られるという意識を持って文章の構成を考えて書くようになります。

そうすると、内容を書き留めた経緯や自分の考えなど、ある程度詳細に内容を記述するようになるので、メモの重要性を再確認しやすくなるかと思っています。

内容を整理する癖が付く

ブログに書いた内容はWebに公開されるので、人に見られるという意識を持って文章の構成を考えるようになります。

そうすると、ある程度内容を体系的に整理してから文章に起こさねばという考えになるので、自然と内容を整理する癖を付けることができます。

そして、ライティングのスキルを磨くことにも繋がってくるかと思います。

PCやスマホがあればいつでも参照できる

メモをブログに書き留めておくことで、メモを書き留めた媒体を所持しなくとも、PCやスマホがあればいつでも参照することができます。

細かい話にはなりますが、最悪自分のPCやスマホがなくとも、ネット回線とブラウザさえあれば参照できますw

まとめ

今回は、メモをブログに書き留める理由についてお話ししました。

メモをブログに書き留めるメリットは、

  • 重要性を再認識できる
  • 内容を整理する癖が付く
  • PCやスマホがあればいつでも参照できる

でした。

ブログに書き留めておけば、書いた内容はずっと残せておけるので、メモ代わりにもなります。

また、ブログを書く事で内容の整理も同時に行えるので、アウトプットには最適のツールだなと思います。

是非、ブログを活用してみましょう。

シンプル思考

僕は物事を考える際に、複雑に考えてしまう傾向がありました。

感情など余計な思考が入り混じることが多かったので、中々正しい判断をすることができずにいました。

最近では物事をシンプルに考えるという思考を取り入れるようになり、少しずつですが思考が整理できてくるようになったかなと感じています。

今回は、シンプル思考について自分なりの考えをまとめておこうと思います。

メリット

本質を見抜ける

物事をシンプルに考えるためには、本質が何なのかを見抜く必要があります。

本質を見抜くことで、何が重要なのかが分かるので、無駄のない行動を取る事ができます。

単純さ

物事が複雑になってしまうと、その分解釈が難しくなり、時間や労力が奪われてしまいます。

単純に物事を捉える事ができれば、無駄なくスムーズに事が運ぶようになります。

無駄がない

複雑なものは、余計なものが含まれていることが多いです。

そういったことが取り除ければ、内容が軽くスッキリとします。

実践方法

本質を探る

考えているテーマについて、本質が何なのかを考える癖を付けてみましょう。

慣れてくれば本質を見抜く力が養われていき、無駄のない行動ができるようになります。

論理的に考える

物事を論理的に考える癖をつけて、単純に捉えられるようにしましょう。

論理的に考えるのが難しいのであれば、感情を抜いて客観的に捉えるようにしましょう。

感情を絡めてしまうと、余計な思考ができてしまい、より複雑になりやすくなってしまうからです。

無駄を排除

こちらは上記2つを実践すれば、自然とできていくかと思います。

それか、無駄だと確定しているものに関しては積極的に排除していくと良いかと思われます。

まとめ

今回は、シンプル思考についてお話ししました。

シンプル思考のメリットとしては、

  • 本質を見抜ける
  • 単純さ
  • 無駄がない

実践方法としては、

  • 本質を探る
  • 論理的に考える
  • 無駄を排除

でした。

シンプル思考は課題解決のために便利なスキルです。

実践できるようになるためには何度も反復して慣れる必要がありますが、役立つスキルではあるので習得できるように頑張っていきましょう。

アウトプットする

僕は元々会話が大の苦手でした。

当時は自分が思っていることを中々言葉にできず、口数が少ない印象だったと思います。

このままではいけないなと思い、口数を増やしてみたりして、アウトプットを意識するよう実践してきました。

そうしたら、当時に比べて徐々に会話のコツが掴めるようになったと思います。

今回は、このアウトプットについて自分なりの考えをまとめておきたいと思います。

メリット

コミュニケーション能力が向上

アウトプットすることで、会話力を鍛えることができます。

アウトプットというのは、頭の中で考えていることを言語化する作業なので、思考を言葉に変換する能力が鍛えられます。

例えば、個人的に美味しと思ったお店の料理を表現する際に、言葉にできなければ相手には伝える事ができません。

言葉に変換できることで、より相手とのコミュニケーションを図る事が可能となります。

新しい発見がある->理解が深まる

アウトプットすることで、アイデアが浮かんだり気付きや発見などが起きやすく、内容をより深く理解することができます。

頭の中では考えがグルグルしてて中々思考が定まりにくいので、アウトプットすることで一点に対して意識を向けることができます。

例えば、内容を整理せずにブログの記事を書いていると、上手く説明ができない部分が出てきたり、内容が不足していたりする部分があったりと色々な発見があります。

アウトプットすることで、そういったことをある程度防ぐことも可能となります。

記憶に残りやすい

アウトプットすることで、頭の中に内容を定着させる働きがあります。

内容をしっかり理解していないと、実際に応用することは中々難しいものです。

例えば、資格の参考書を読んだだけで、試験では良い点数が取れるわけではありません。

その場合は、問題集にチャレンジするなど実践を取り入れることで、より確かな知識へと変わります。

実践方法

紙に書く

思考を紙に書き出す方法があります。

紙とペンがあれば手軽に行えるし、忘れない内にすぐ書き留めることができるので便利です。

SNSやブログなどの媒体にて発信する

何かテーマを決めて、SNSやブログなどに投稿する方法があります。

発信した情報はネットを使って公開されるので、他人に見られるという意識をもってアウトプットすることができます。

そうなると、適当な文章は書けなくなるので、伝わる文章を意識して書く事ができます。

話す

普段の会話などでもアウトプットを実践することができます。

相手に内容を伝える際は、アウトプットするという意識を持って話してみましょう。

まとめ

今回は、アウトプットについてご紹介しました。

メリットとしては、

  • 記憶に残りやすい
  • コミュニケーション能力が向上
  • 新しい発見がある->理解が深まる

実践方法としては、

  • 紙に書く
  • SNSやブログなどの媒体にて発信する
  • 話す

でした。

自分の考えを言語化するのが得意・苦手は人それぞれあるかと思います。

苦手だとしても、訓練していけばある程度は伸びる能力だと思いますので、日々アウトプットを意識して実践していきましょう。

自信を持つ

僕はどちらかと言えばネガティブに考えてしまう傾向にあり、自分の能力に自信が無かったり、心配性であったりします。

ですが、そういった自信のない状態の思考というのはデメリットでしかありません。

それならいっそのこと自信を持って挑んでいく方が自身のプラスとなるのでお得だと思います。

今回は、自信を持つことに関してまとめていきます。

メリット

弱い心に打ち勝てる

夢を実現するためには必須要素だと思います。

夢を実現するためには、殆どの場合新しいことに挑戦しなければならず、避けて通ることはできません。

そして新しいことに挑戦しようとすると、大抵の場合はリスクが生じるので、失敗したくないと思い諦めてしまう原因になります。

なので、自信を持つことでリスクを乗り越えることが重要になってきます。

物事が有利に進む

「引き寄せの法則」という考え方がありますが、心で思っていることというのは現実に現れます。

ネガティブな感情であれば、ネガティブに思っていることが現実にも反映されるということなので、そうなってしまうと嫌ですよね。

そうならないためにも、絶対に大丈夫と確信を持って潜在意識に刷り込ませられれば、物事が上手く回るようになるので上手に活用していきたいですね。

自信を付ける上で意識すること

成功体験を積む

小さなことでも良いので、目標を決めてそれに向けて挑戦してみる。

そういった経験を積むことによって、「自分もやればできる」という自信を育むことができます。

失敗しても気にしない

何かに挑戦する時は、必ずと言って良いほど失敗は付きものです。

なので、失敗してもいつまでもネガティブにならず、当たり前と捉えて気に留めない事です。

まとめ

今回は、自信を持つことについてまとめました。

自信を持つメリットには、

  • 弱い心に打ち勝てる
  • 物事が有利に進む

自信を付ける上で意識することは、

  • 成功体験を積む
  • 失敗しても気にしない

ということでした。

自信を持つことは簡単なことではありませんが、コツを掴めばできるようになるかと思います。

上記の例はあくまでも一例ですが、是非実践してみてはいかがでしょうか。

[Rails]Heroku上で「ActiveRecord::UnknownAttributeError」が発生した時の対処

開発中のRailsアプリをHerokuへデプロイして動作を確認しようとしていたら、「ActiveRecord::UnknownAttributeError」というエラーが発生。

かなり時間を取られてしまったので、対処方法を忘れないようにメモしておこうと思います。

経緯

Railsアプリ開発でユーザーを論理削除するための機能を追加しようと思い、gemの「paranoia」を導入しました。

そして、テーブルにユーザーが削除された日時を保存するためのカラムを追加してHerokuに対してマイグレーションを実行。

アプリを実行してみると、「ActiveRecord::UnknownAttributeError」というエラーが発生してしまいました。

ActiveRecord::UnknownAttributeErrorとは

プログラム上で利用するモデルの属性にもかかわらず、実際にはテーブルにカラムが存在しない場合に発生するエラーのようです。

ただ、今回はHerokuに対してマイグレーションを適用済みなので別に原因がありそうですね。

対処方法

対処は簡単な話で、サーバーを再起動したら正常に動作するようになりました。

Heroku上の特定のアプリのサーバーを再起動する
$ heroku restart --app [アプリ名]

今後もこういったことが発生した場合に、今回のことを思い出してサーバーを再起動するようにしたいと思います。

読書まとめ「人生ドラクエ化マニュアルⅡ」

偶然本屋で発見した「人生ドラクエ化マニュアルⅡ」という本を最近読み終えました。

僕自身が以前からTVゲームなどが大好きだったのもあったり、最近は自己啓発の本を読むようにもなったりしたのもあったので、気になって購入して読んでみました。

今までに読んだ自己啓発本に含まれている内容が多々あり、あまり目新しい部分はありませんでしたが、人生をゲームとして捉える発想は面白いなと思いました。

今回は、この本で僕がためになったなと思った内容、印象に残った内容についてご紹介したいと思います。

本の概要

この本では、人生をドラクエのようなゲーム要素として捉えて人生を楽しもう、といったような内容となっています。

前作「人生ドラクエ化マニュアル」も出ていますが、読んでいなくても内容的に支障はなかったです。

三章で構成されており、ボリュームとしては二章が大半を占めしています。

  • 一章 : 人生というゲームの定義
  • 二章 : 人生に伴う障害(敵)への対処
  • 三章 : Q&A

所々で見かけるゲームっぽいイラストなどが、楽しく読める要素となっていてGOODでした。

印象に残った内容

バトル5「見栄・世間体」

個人的に一番心に響いた内容でした。

新しいことに挑戦しようとすると、必ずといっていいほど付きまとう問題がこれですよね。

ただ冷静に考えてみると、誰しも最大の関心ごとは”自分”であって、それ以上のものはない。

見栄・世間体というのは、自分が必要以上に気にしすぎているだけで、結局誰も自分のことを見ていないのが現実。

人は人生の最後には必ず死んでしまうので、どうせなら見栄や世間体を気にせず思うがままに生きようと思いました。

バトル12「時間ナシ」

目標ができた後は、やらなければいけないことが見えてきます。

生活環境によって時間を捻出することが難しい人がこの問題に当てはまってしまいます。

ここの節では、時間術を活用して無駄な時間を減らすための方法が紹介されていたので、個人的に参考になりました。

  • 仕事・プライベートで分けずに行う必要がある全ての行動をリスト化。
  • それを場所毎に分類する(例えば自宅、会社、電車など)。
  • このリストを参照することで、今いる場所でやれることが瞬時に分かる。

自分の勤めている会社の仕事の流れを振り返ってみると、意外に隙間時間がたくさんあることに気づきました。

実際にリストを作って、仕事の合間にできるタスクを整理しておいて取り掛かれる状態を作れるようにしたいなと思いました。