プレーヤー死亡時にラグドール化する

ゲームによくある、キャラクターが死んだときに重力に従ってパタッて倒れるやつです。
サードパーソンエグザンプルマップを使ってやってみます。
ラグドール化には
Set Simulate Physics や Set All Bodies Simulate Physics というノードを使います。

Set Simulate Physics は、
「物理シミュレートのオン・オフ」を設定できます。
Target にはもちろん物理シミュレートさせたい(或いはやめさせたい)メッシュを接続します。
Simulate のチェックボックスにチェックを入れると物理シミュレートがオンに、
チェックをはずすと物理シミュレート無しになります。

▼Set Simulate Physics と Set All Bodies Simulate Physics の違い

・Set Simulate Physics
ターゲットは Primitive Component Reference
Primitive Component は一般的に Capsule Component や StaticMeshComponent、SkeletalMeshComponent のこと

・Set All Bodies Simulate Physics
ターゲットは Skeltal Mesh Component Reference となっています。

差は多分それだけです。
今回はプレーヤー死亡時の演出ということで、キャラクターのメッシュ全体を物理シミュレーションするので
どっちを使っても差は無いはずです。

▼ブループリント

Rキーを押したらプレーヤーキャラクターが死んで物理シミュレーションされるようなノードを組みます。

f:id:tabascolabo:20170606020822j:plain

このブループリントでまずカプセルコンポーネントコリジョンを無効化し、
プレイヤーキャラクターのメッシュを物理シミュレーションします。
なぜカプセルのコリジョンを無効化する必要があるのかというと、
物理シミュレーション開始時にカプセルとメッシュのコリジョンが重なってしまい、
わけのわからない方向に突然吹っ飛ぶのを防ぐためです。
またメッシュのコリジョンプリセットをBlockAllにしておかないと、
シミュレーションが始まった瞬間に床をすり抜けて落ちてしまいます。
さらに画像にはありませんが、Camera Boom を Mesh の子にしてあげてください。
こうすることで、死亡時に衝撃を受けて吹っ飛んでもカメラがメッシュを追いかけてくれるようになります。

その場でRキーを押すとフニャァ…とプレーヤーキャラクターが倒れるようになりましたが、
ジャンプしながら死んだり、走りながら死ぬとなぜか2~3秒後にメッシュが消滅する怪現象が
発生するはずです。
この原因は、勢いよく動きながら死んだ場合、カプセルのコリジョンが無効化された時
その勢いを保持したまま床をすりぬけて下に落ち、
デフォルトで存在するキルゾーンに触れてカプセルが消滅し、
結果としてカプセルの子であるメッシュも消滅するためです。

キルゾーンを消す

対策のひとつとして、デフォルトで存在するキルゾーンを消します。
ワールドセッティングの Enable World Bounds Checksをオフにすると
デフォルトのキルゾーンが消滅します。

f:id:tabascolabo:20170606020845j:plain

これでプレーヤーが死ぬと、デストロイされるまでカプセルは無限に下に落ちていきます。
死んでもずっとメッシュは消えないで残ってくれるようになりました。

▼失敗した解決案

以上でとりあえずプレーヤーが死んだときにキャラクターが物理法則に従って倒れるようにできましたが、
カプセルがキルゾーンに触れてメッシュが消滅してしまう問題の対策に、
もうひとつ思いついた案があったものの、うまくいきませんでした。

死んだときにカプセルが重力から影響を受けないように設定する、というものです。

f:id:tabascolabo:20170606020913j:plain

Set Enable Gravity というノードを使って、物理シミュレーション開始と同時に
カプセルが重力の影響を受けないように設定してみたのですが、
うまくいかず、カプセルは下に落ちていってしまいました。
カプセルの Physics にある Enable Gravity をオフにしたらいけるかな?とも思いましたが
これもうまくいかず、カプセルが下に落ちてしまいます。
詳しい人がいらっしゃいましたらぜひ教えて下さい。

▼関連したノード

Set All Bodies Below Simulate Physics
ボーンを指定して、そのボーンとそのボーンより下のボーンすべてを物理シミュレーションする。
つまりキャラクターの一部だけ物理シミュレーションできる。

Set All Bodies Below Physics Blend Weight
上のとほとんど同じだがどれくらい物理シミュレーションの影響を受けるか指定できる。

 

参考
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Physics/SetSimulatePhysics/index.html
https://docs.unrealengine.com/latest/JPN/Programming/UnrealArchitecture/Actors/Components/index.html#プリミティブコンポーネント
https://docs.unrealengine.com/latest/JPN/Engine/Animation/PhysicallyDrivenAnimation/index.html
https://www.youtube.com/watch?v=VVapMSojytg
http://unrealbussan.hatenablog.com/entry/2015/03/10/200716

 

勉強のやる気がでない時の対策

やる気がでないのは誰にでも起こりえること
やる気がでない自分を責めて自己嫌悪に陥ってもそれは解決にならない
やる気を出すための対策方法を考えてみよう

▼そもそも勉強する体力があるか

例えば仕事や学校から帰ってきて、夜勉強するぞとなると
体力的に厳しい場合がある
それはやる気がないのではなく勉強する体力が残ってないわけで
ここをごっちゃにしないように
理想を言うなら勉強するなら朝がいい
寝る前とかはきつい

▼睡眠時間を減らさない

勉強するために睡眠時間を減らすのはあまりおすすめしない
忙しくてそうしないといけないのもわかるが
眠いのを我慢して勉強するのはかなり効率が悪い
やるなら勉強前にシャワーを浴びて目を覚ますとか
眠気を飛ばす対策が必要

▼他人を巻き込む

ひとりでやってると自分との戦いになって
孤独な戦いの中多くの戦士が志半ばに倒れていくもの
勉強とはだいたい暗記なので
友達に単語を覚えたりするのを手伝ってもらえばいい
友達が単語を読んで、自分が単語の意味を答えるとか
これならSkypeとかでもできる
相手に利点がないので金で買収したり
夕飯を奢るとかなんらかの対価を用意しよう
ここで注意してほしいのはライバルを見つけて
競い合おうということではないということ
自分の勉強を手伝ってくれるポジションの人を作るのが大事

▼まず5分でもいいから始める

人間はやりはじめないとやる気がでないという脳の欠陥を持っている
やりはじめるまでが一番つらい
でもやりはじめたらなんとかなるから
とりあえず5分だけでも、とか1ページだけでも、と始めればいい
できないくせに毎日10時間勉強しようとか意気込むのは初心者がよくやるが
身の程を知ろう
おまえはそこまで根性がある人間ではない
現実を見ろ

▼だらだらやることを否定しない

これも上の「5分だけでいいから!さきっちょだけだから!」と似てるが
あんまりやる気でないから一切やらない、やる気が超ある時のみ効率重視でやる!という考え方は糞
0か1かの二元論で考えるのは子供
大人はグレーなところも受け入れられるのである
どれだけ効率よくやってもやはり勉強時間ってのは重要だから
1か100で言ったらそれは100のほうがいいけど、
0か0.1なら0.1が絶対いいに決まってる

▼適度な運動をとる

勉強はストレスがたまる
特に暗記しなくちゃいけないことが多い時
家の周りを1~2周軽く走ったりして外の空気を吸って体を少し動かそう
頭がすっきりする
ここでガチって10kmも走り出すのは馬鹿

▼場所を変える

勉強は机に向かってやらなくてはいけないというルールはない
マンネリを防ぐためにたまには立って勉強したり
カフェやレストランで勉強したりして気分を変えよう
過ごしやすい季節なら公園のベンチでもいい

▼まとめ:やる気がないのは気合いでなんとかならない

人間というものは、やるぞおおおって毎日やる気が出るものではない
まずその現実を見る
自分の理想的な勉強のしかたにとらわれずに
どうやって勉強のストレスをコントロールするかが重要なのだ

  

DOTAというゲームから辿り着くフィリピン人の真の英語力

DOTAってゲーム知ってる?
ゲームなのにプレイするとストレスが溜まるファックなゲーム
日本ではあまりメジャーではないせいで
オンラインでプレイすると必ずフィリピン人とマッチングする神ゲー
もちろん皮肉で言ってるんだぞ

だがこの記事で俺が言いたいのは
あいつらピノイがどれだけDOTAの世界においてクソな連中かということではなく
ゲーム中にフィリピン人の英語がガバガバすぎて何言ってるかわからないことが多々あって
「フィリピン人も英語ヘッタクソだなー」なんてなんともなしに思っていたんだが
ふと身の回りにオンラインで格安でフィリピン人と英会話できるサービスとか
フィリピンに英語留学とか耳にすることが少なくないことに気づいて
フィリピン人の英語力に疑問を持った

ネットで検索してみるとフィリピンに英語留学というのはメジャーらしく
「フィリピン 語学留学」で検索するとズラーッと情報が出てくる
「フィリピン 英語」で検索すると
フィリピン人の英語はうまい!なぜなのか!フィリピン人に学ぶ英語教育!
みたいなタイトルの記事もたくさん出てくる
意味がわからない
俺の知ってるフィリピンはフィリピンではなかったのだろうか
でもあいつらキレはじめるとbobo putang ina moとかgago!tanga!とタガログ語で騒ぎはじめるし
間違いなくフィリピン人のはずである

俺の推測では英語が公用語になっているが日常ではタガログ語で話してると思われる
フィリピン人同士ではタガログ語でチャットしてるし
こちらが英語でチャットすると最初は彼らも英語でチャットするけど
キレはじめるとタガログ語で騒ぎ出す
興奮して素が出ている時に話す言語が最も身近な言語のはずだと考えるとやはり英語ではなく
タガログ語が最も身近な言語のようだ
日常では英語で話していると主張するサイトも多いが俺は信じられない

DOTAプレーヤーなら奴らはキレるとタガログ語でしか話さなくなるということはみんなが知っている
ソースはフィリピンに興味が毛ほどもないのにboboとかtanga putaとかいつのまにか覚えた俺

フィリピン人が英語を話せる理由としてよくあがるのが、
フィリピンはアメリカの植民地だったから、というもの
フィリピンがアメリカから独立したのは70年前
植民地時代にアメリカ人が移り住んで英語教育が行われていたとしても、
現在のフィリピン人の英語力の根拠とするには少し時が経ちすぎている

ここでひとつ知っておいてほしいのが
公用語=みんなが正しくその言語を話せる ではない
公用語は国が規定するものであり客観的事実ではない
たとえばウクライナにはロシアから来た人が多く住んでいて
一部の例外を除いてほぼ全員がロシア語とウクライナ語の両方を話すし
多くの人が普段からロシア語を話す
しかしウクライナ公用語としているのはウクライナ語のみである

フィリピンでの事情を考えてみよう
フィリピンの場合アメリカからの移民が多く来たためにフィリピンで英語が話されるようになったわけではなく
英語学習に力を入れると同時に英語を公用語としただけ
現地にアメリカ人が多く住み着いて英語が話されるようになったわけではない
実際フィリピンにアメリカ人はほとんど住んでいない
(http://www2.ttcn.ne.jp/honkawa/8130.html)

これが意味するのは、フィリピン人は学校で勉強して英語を話せるようになるわけで
当然中には勉強ができない人もいる
フィリピン人はみんな英語が話せる、と言いきるのは難しいのではないか

またフィリピンの英語講師のレベルがやばいと暴露している
現地の語学学校のブログもある
http://brighture.jp/b-blog/266

実際にフィリピン人の英語をyoutubeで聞いてみよう

www.youtube.com


youtubeでネイティブ(多分アメリカ人)が「なぜフィリピンで俺の英語が通じないのか」というビデオを載せていたので興味がある人は検索してくれ

フィリピン人が英米人と同等の英語力を持っていると考えるのは100%間違いで、
フィリピンへの語学留学が完全な英米への留学の代替となるとは言えない
彼らはネイティブではないのだ
それでも安価だし行く意味が全くないわけではないので行くのは自由だ
俺は行かないけどな

これから英語だけで食っていくのはきつい

▼外国語教室を経営する場合

・思ったより需要が無い

自分が外国語教室を経営した場合
生徒を集めるのはなかなかきつい
外国語ができるようになりたいと思う人は多いはず!と思うかもしれないが
それは「宝くじあたったらいいな」と思う人が多いのと同じで
自分の自由時間を削って外国語を身に付けたいと思う人は実際にはあまりいない
個人的に大手の外国語教室はブラックジャック並に法外な値段設定だと思うけど
経営者側からすると無理して客単価をあげないとやっていけないのが実情

そもそもブラックジャックは法外な値段で病気やけがをほぼ100%治してくれるけど
英会話教室は高い金払っても英語がぺらぺらになることを保証はしてくれないと考えると
ブラックジャックよりタチが悪いと思われてもしょうがない

 

・客単価をあげるしかない

自分が外国語を教えていた時はレッスン1回ごとに支払いで
来たくなったら予約するというシステムだったが
無料体験のあとに1-2回来て消える人が多かった
こういった支払い方法は客側から考えると安心だが利益が安定しない
だから英会話教室は数ヶ月分まとめて最初に金とるところが多い
俺は人格者なので安心明瞭会計やめたくなったらいつでもOKだった
だが商売において客の利益ばかり優先するのは悲しいことに糞なのである

長く通う人は留学したい人とか仕事で絶対その外国語が必要な人
話せるようになりたいという漠然とした理由で続くのはあまりいない
あたりまえだけど

 

・日本人の先生をいやがる人も少なくない

学習者は日本人の先生が英語を教えるのをいやがる人が多い
白人に教わりたいっていう前言ったようなホスト代わりに通いたいと考える人もいるし
日本人の先生は発音が悪いとか、英語を間違えると考える人もいる
日本人で発音悪い先生とか現地に滞在した経験がない先生とか少なくないのも現実だからしゃーない

 

・学校の授業のサポートは塾や家庭教師の守備範囲

小学校でも英語教育が始まったがそれは他の教科も教えられる塾や家庭教師でカバーできる
英語が苦手な小学生や中学生は外国語教室に通うのではなく塾や家庭教師に頼むのが普通

 

▼翻訳家の場合

翻訳をするにしても訳されてない本がそもそも少数
本とかウェブサイトの機械翻訳ならGoogleががんばってるし
まだ完全ではないにしろ人工知能が発展していく今、紙媒体の翻訳の未来は暗い
通訳とか、ビデオに字幕をつけるといったことはまだまだ人間がやらなくちゃいけないから
そっちを中心にしていったほうがいいのかも

 

▼映画やゲームの字幕作る人の場合

そもそも字幕つける人にあまり英語力を求められていない
映画の字幕で言えば例えば戸田奈津子みたいな誤訳しまくりな人がいても
配給会社は正確な翻訳にそこまで興味ないし、多少の誤訳のせいでその映画を見る客が減ることもない
となるとハードルが低いこともあり供給過多な感じがする

 

▼翻訳に需要がないわけではない

自分が例えばプログラミング中に新しいライブラリを使いたい場合
大概ライブラリの仕様はあたりまえだが英語で公開されていて
英語が読める自分でもよくわからんライブラリの仕様を英語で読むのはめんどい
「これの日本語訳だれか作ってねーのかよ」と思うことは日常茶飯事だが
専門用語が多い翻訳はその道である程度経験がないとつらいところがあって
英語一辺倒の翻訳家だと苦労する
むしろ英語が少しできるプログラマのほうが理解はできたりする
こう考えると英語しかできない人ってあんまり役に立たねーな

 

▼これから英語で食っていこうとする人は…

そういうわけで英語で食っていこうと思ってる人は自分がこれからどのように仕事を見つけていくか考えて
時代の流れに注意していないと食いっぱぐれる(そもそもこれは英語だけの話ではないが)
今まであった仕事がなくなるわけだから先人の行き方を参考にしていると困ることになるかもしれない

 

 

scipyのインストール方法

けっこう苦労したのでメモとして書い残しておきます。
自分の環境はWindows7 64bit、Python2.7です。

scipyのインストールにはnumpyがまず必要なので、
pip install numpy
pip install scipy
としようとしたのですが、scipyをインストール時に

(省略)…python2.7 failed with error code 1…(省略)

というエラーが出てインストールできませんでした。

 

<解決方法>

まずインストールされているnumpyを一度削除します。

pip uninstall numpy

次に、 http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy にアクセスし、
numpy+mklをダウンロードします。
この時、自分の環境にあったものをダウンロードしないと、

….whl is not a supported wheel on this platform.

というエラーが出て、このプラットフォームではサポートされてませんよ、
と怒られてしまいます。
win32やwin amd64と書いてありますが、これは
正直よくわからん
以前はwin32でインストールできたけど
Python2.7.16ではamd64じゃないとだめみたいです。
cpXXmと書いてあるところの数字はpythonのバージョンです。
自分はPython2.7なので cp27m-win32.whl をダウンロードします。

その後、Scipyも同様に自分の環境にあったものをダウンロードします。
ダウンロードしたこの2つのファイルをpythonのフォルダにぶちこんで、

pip install numpy‑1.11.3+mkl‑cp27‑cp27m‑win32.whl
pip install scipy‑0.19.0‑cp27‑cp27m‑win32.whl

とインストールしてあげればうまくいきました。

自分の環境ではpipは最新版だったのですが、
pipを最新版にしておいたほうがいい、という情報もあったので、
念のためそこも確認しておいたほうがいいかもしれません。

 

参考
http://toriaezu-engineer.hatenablog.com/entry/2016/10/09/084428
http://stackoverflow.com/questions/26575587/cant-install-scipy-through-pip

 

フランス語の初心者向け教本

フランス語の場合は辞書が信用できるので
電子辞書でも買ってどんどん単語を覚えれば単語集は特に買う必要は無い
必要なのは文法書だけだが俺がおすすめできる本は一冊しかない


▼文法から学べるフランス語

深く突っ込みすぎてないし、内容も網羅されている初心者にちょうどいい文法書
とりあえず一通りやれば必要なフランス語文法がほとんど学べる
自分が昔フランス語を教えていたときに生徒に借りパクされたのでもう手元にはない


清岡智比古って人が書いてる本はおもしろいけど
学習するのには向いてないということを覚えておいてくれ