auの日記

プログラミング初心者の日記。(auはハンドルネームです)

UE4でラグドールがちゃんと動かない

auです。

きのう、ラグドールについての記事を書きました。

program-shoshinsya.hatenablog.com


自分も「キャラが死亡判定になった場合にラグドールにしよう!」と思い、設定してみたのですが、倒れてくれませんでした。

Kキーを押すことで、キャラクターはダメージを受けて死亡判定になり「dead!」という文字列を出力して、物理エンジンが作用するようにしたのですが、ちゃんと倒れてくれませんでした。

f:id:program-shoshinsya:20190129182509p:plain

そこで、もともと倒れるように設計しなかったのではないかと思い、キャラクターの物理アセットをみました。

すると、このでシミュレーションをしても前に倒れなかったので、原因はここにありそうです。

f:id:program-shoshinsya:20190129182917g:plain

選択した範囲だけシミュレーションすることもできるのですが、この時はそのようなこともやっていないので、ここを設定した際にどこかいじってしまったみたいです。

あれこれいじっていてもいまだに解決できていないので、もう少し触ってみたいと思います。

使っている参考書

UE4のラグドールとは

auです。

ゲーム制作で出てくる用語の「ラグドール」って何だろうと思い調べてみました。

ラグドールとは

ラグドールとは、ゲームで使われる物理法則のことを言います。

ラグドール(rag doll)は「ぬいぐるみ」という意味があります。

キャラクターが気絶や死亡になった場合の、人体の方をラグドールというそうです。格闘ゲームでやられた際の"体の力が抜けてその場で倒れこむ動作"やFPS(ファーストパーソンシューティング)などでキルされた際の"地面に倒れこんだ後の処理"などがラグドールに当たります。

つまり、キャラクターの死亡などにより、動作ができなくなった後に重力や運動エネルギーからそれらしく物理的な動きを再現することをラグドールとい言います。

使っている参考書

UE4でGitは使えるのか?

auです。

gitを少し勉強していて、ふと疑問に思ったことがあります。それは、UE4でもGitを使って開発できるのかな?というものでした。

UE4側で、複数人で開発する際のバージョン管理は「ソースコントロール」というところから行うそうです。

f:id:program-shoshinsya:20190127142541p:plain:h280

Git(β版)がありました。まだ本格的に使えないのかな・・・?

他にもSubversionや、Perforceなどありますね。こちらもそのうち調べたいなと思います。

Git(β版)をソースコントロールで指定して、起動してみるとこんな画面が出てきました。

f:id:program-shoshinsya:20190127185544p:plain:h280

コミットと同じ感じで、コメントを書いて送信するみたいですね。

と思ったのですが、どうやってもここで止まってしまいます・・・

macUE4、Gitの関係がよくないのか、単純にメモリ不足なのか・・・

f:id:program-shoshinsya:20190127190116p:plain

うーーん・・・。色々と見直さなきゃいけない気がしてきました。

一応、UE4でもGitは使えるということを知ることができたのでよかったです。

使っている参考書

git stashの使い方を調べてみた

auです。

gitを利用してチームで開発しているときに、ブランチで作業している時に、別のブランチでの作業をしなくてはならないという場面がありました。

そんな時に、一時的に編集した部分を退避することができるコマンドが、stashです。

stash: 隠す、しまう

git stash

これだけで今の編集の内容を退避することができます。実際に使うと、変更したソースコードが消えるはずです。

退避した内容は、stash@{番号}で、番号順に格納されます。忘れないようにしましょう。

>|||
git stash save "コメント"
|

大学2年生の授業が全部終わって思ったこと

auです。

 

今日でついに、2年生での授業が全て修了しました。

 

まじでがんばった・・・そして楽しかったと思えた1年だなと、思います。

 

1年生でPythonをやって、2年生になってC言語、チーム開発を一生懸命やりました。

 

教授に聞くと「業界だと知らないと恥ずかしいよ」と脅されながらやりましたねー。テストでも、何を聞かれて何を答えなければならないのかが分かっていたので、授業の内容はそれなりに理解したのではないかと感じています。嬉しい。

 

やっと終わって教授としゃべっていると「もう3年生になって就活だよ!」と言われ、もう就活か・・・と思っているのが本音です。

 

もっと遊んでいるような大学生活を予想していましたが、今の自分がやる気になってくれているおかげで、また別の意味で充実した大学生活を送れていると思います。

 

テスト終わりの食事会の後に書いているので、こんな感じの内容になってしまいましたが、後悔がより少ない道を通れていると思っているのでとても満足しています。

 

これから就活が始まるけどもっと楽しんで行こうと思います。

 

 

 

リソーススターベーションとは

auです。

テストを受けた際に嫌ってほど出てきたリソーススターベーションについて調べました。

リソーススターベーションとは

リソーススターベーションとは、マルチタスクやマルチスレッドで、プロセスが必要なリソース(資源)を獲得できない状況のことを言います。

プロセスは、資源を得られないために作業を完了することができず、デッドロックという状態になってしまっています。

プロセスの優先順位や、スケジューリングの方法によって起きてしまう問題なので、リソーススターベーションにならないようにする必要があります。

MacとUbuntuでアセンブリ結果が違う

auです。

テスト勉強で忙しいので面白いなーと思ったことを書きたいと思います。

とあるC言語プログラムをアセンブリした結果、MacUbuntuで結果が違いました。

とあるC言語プログラム

int add (int a, int b) {
    return a + b;
}

Macアセンブリ結果

	.section	__TEXT,__text,regular,pure_instructions
	.macosx_version_min 10, 13
	.globl	_add                    ## -- Begin function add
	.p2align	4, 0x90
_add:                                   ## @add
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	movl	%edi, -4(%rbp)
	movl	%esi, -8(%rbp)
	movl	-4(%rbp), %esi
	addl	-8(%rbp), %esi
	movl	%esi, %eax
	popq	%rbp
	retq
	.cfi_endproc
                                        ## -- End function

.subsections_via_symbols

Ubuntuコンパイル結果

a	.file	"add.c"
	.text
	.globl	add
	.type	add, @function
add:
.LFB0:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -4(%rbp)
	movl	%esi, -8(%rbp)
	movl	-4(%rbp), %edx
	movl	-8(%rbp), %eax
	addl	%edx, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	add, .-add
	.ident	"GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609"
	.section	.note.GNU-stack,"",@progbits

よくよく見ると違っていたのでなんだか面白いなーと思いました。

勉強頑張ります。