Notifications
bg
rin
Student
0
Likes
0
Followers
0
Connections
All
Articles0
Games0
Showcases0
Column0
Jobs0
こんにちは。自分は今プレイヤーが攻撃時のカメラ揺れを実装しようとしています。(http://baba-s.hatenablog.com/entry/2018/03/14/170400) このサイト様のようにCameraShakeスクリプトを作ってMainCameraにアタッチしたのですが揺れず、MainCameraに付いているCinemachineBrainのUpdate MethodをLateUpdateからFixedUpdateにすると揺れました。ですが移動中に揺らすと揺れた後にプレイヤーが移動方向にスッと動いて気持ち悪い感じになります。
https://teratail.com/questions/129737 ←この質問のようにCinemachineBrainを同じように切るやり方をやってみるとUpdateMethodがLateUpdateでも揺れましたが依然プレイヤーの挙動が不自然になります。
カメラが揺れた後、プレイヤーが移動しているとプレイヤーを追ってパッと画面が切り替わる感じです。
カメラ揺れを実装する際のいい方法があったら教えてくださると幸いです、よろしくお願いします。


添付画像はMainCameraのInspectorです。

tamtam
Community Evangelist
6 months ago
こちらも参考に試してみると良いかもしれません。 http://tsubakit1.hateblo.jp/entry/2018/07/18/023553
こんにちは。早速ですがいくつか質問があります。
2Dゲームの攻撃判定についての質問です。 
ユニティちゃんの2Dのアニメーションを使っているのですが、剣を使った攻撃モーションでの攻撃判定の実装方法が分かりません。
画像のように剣を振った時だけ攻撃判定を出したいのですが、どうすればいいでしょうか?

https://teratail.com/questions/149212

上記の質問と似ていると思うのですが、これだと攻撃している(剣を振っている)時はプレイヤー自身の当たり判定はどうなっているのか分かりません。元々のプレイヤーのコライダーとまた別に剣のコライダーをつけるのでしょうか?
また、そうした際、剣を振っている時だけ剣の範囲に攻撃判定をつけるとして、例えばその攻撃判定に当たった敵は消える、というような処理にする場合どのようなスクリプトを書けば良いのでしょうか。

簡単に言うと、剣を使った2Dアクションの攻撃する際の当たり判定らへんのことが分かっていない感じです。剣を後から持たせるのは剣にコライダーをつければ解決するけど、元々剣を振っているアニメーションの場合はどうするのか分かりません。一般的にはどのような方法がとられているのでしょうか。長々とすみません。

>https://teratail.com/questions/149212 >上記の質問と似ていると思うのですが、これだと攻撃している(剣を振っている)時はプレイヤー自身の当たり判定はどうなっているのか分かりません。元々のプレイヤーのコライダーとまた別に剣のコライダーをつけるのでしょうか? BoxColider2Dはキャラクター自身のGameObjectとは別に持っておき、攻撃モーションに合わせて有効化・無効化する感じで出来ます。つまり「元々のプレイヤーのコライダーとまた別に剣のコライダーをつける」です。この時コライダーはTriggerで利用します(判定のみを使用) 「攻撃判定に当たった敵は消える」は「攻撃を攻撃を行うColliderがOnTriggerEnter2Dで接触を検知、接触対象にメッセージを送信」しても良いですし、「攻撃を受けたColliderがOnTriggerEnter2Dで接触を検知し、接触対象から情報を取得」しても良いです。前者は武器毎に特殊な動きがある場合に作りやすく、後者は武器毎の違いが攻撃力程度の場合は作りやすいです。 実際には攻撃判定の取得方法は色々ありますが、とりあえず上の方法で実現できます。
初めまして。unityを触って少しの初心者です。今横スクロール2Dアクションゲームを作っています。OnTriggerEnter2Dメソッドの処理でtransform.localscaleを使ってプレイヤーを大きくしているのですが、移動すると元の大きさに戻ります。OnTriggerEnter2Dは当たった瞬間しか処理を行わないことは分かるのですが、当たった瞬間のこのlocalscaleの効果を持続させることはできませんか?アイテムに当たったらプレイヤーが大きくなり、大きくなったまま移動できるようにしたいです。何か教えていただけると有り難いです。よろしくお願いします。

S
a year ago
Reply@SakamotoRyutransform.localScaleの値を一度変更すれば、その値は残りつづけます。移動するとそれが元の大きさになってしまうということは、移動時に実行される何かがlocalScaleを再設定してしまっているのだと考えられます。考えられる可能性の一つはアニメーションです。プレイヤーキャラクターの移動アニメーションのなかにScaleが含まれていれば、それによってtransform.localScaleの値が上書きされるでしょう。この場合の解決策は、アニメーションでScaleを変更する対象になっていないTransformをスクリプトによるlocalScaleの変更対象にすることです。アニメーション以外には、プレイヤーキャラクターのために用いている何らかのスクリプトがlocalScaleを再設定してしまっている可能性も考えられます。
どのスクリプトが影響しているか分からない場合は、Update関数内でlocalScaleを監視し、目的の値と異なっていたら再設定するという手段もあります。 1.OnTriggerEnterでプレイヤーが触れたことを確認する。 2.プレイヤーのクラスを参照して「巨大化アイテム取得」のpublic関数を実行する。 3.プレイヤーの「巨大化アイテム取得」関数内で、アイテムの残り効果時間のタイマーをセット。 4.効果時間のタイマーが0より大きい間、localScaleが目的値と一致しているかどうかを監視し、異なっていれば目的値に再設定する命令をUpdateまたはLateUpdate内に置く。 5.効果時間のタイマーからTime.deltaTimeを減算する命令をUpdate内に置く。
a year ago
Reply@SakamotoRyutransform.localScaleの値を一度変更すれば、その値は残りつづけます。移動するとそれが元の大きさになってしまうということは、移動時に実行される何かがlocalScaleを再設定してしまっているのだと考えられます。考えられる可能性の一つはアニメーションです。プレイヤーキャラクターの移動アニメーションのなかにScaleが含まれていれば、それによってtransform.localScaleの値が上書きされるでしょう。この場合の解決策は、アニメーションでScaleを変更する対象になっていないTransformをスクリプトによるlocalScaleの変更対象にすることです。アニメーション以外には、プレイヤーキャラクターのために用いている何らかのスクリプトがlocalScaleを再設定してしまっている可能性も考えられます。
ありがとうございます! localscaleの値って1度変更したらそのままなんですね!アニメーションは今のところ付けていないので他のスクリプトが影響してそうです、見直してみます!
S
a year ago
transform.localScaleの値を一度変更すれば、その値は残りつづけます。移動するとそれが元の大きさになってしまうということは、移動時に実行される何かがlocalScaleを再設定してしまっているのだと考えられます。考えられる可能性の一つはアニメーションです。プレイヤーキャラクターの移動アニメーションのなかにScaleが含まれていれば、それによってtransform.localScaleの値が上書きされるでしょう。この場合の解決策は、アニメーションでScaleを変更する対象になっていないTransformをスクリプトによるlocalScaleの変更対象にすることです。アニメーション以外には、プレイヤーキャラクターのために用いている何らかのスクリプトがlocalScaleを再設定してしまっている可能性も考えられます。
About Me
No description
See more
Skills
No skills added yet
Certifications (0)
Import
See all
rin's liked projects (0)
No likes yet
Following (0)
Not following anyone yet
Followers (0)
No followers
Following Companies (0)
Not following anyone yet