質問編集履歴

3

タグの追加

2021/02/16 15:09

投稿

aaa17983
aaa17983

スコア0

test CHANGED
File without changes
test CHANGED
File without changes

2

文章の大幅な訂正

2021/02/16 15:09

投稿

aaa17983
aaa17983

スコア0

test CHANGED
@@ -1 +1 @@
1
- Unity Pixel Per Unit が1の環境での物理挙動について
1
+ Unity Pixel Per Unit が 1 での RigidBody2Dによる物理挙動についてのご相談
test CHANGED
@@ -1,5 +1,145 @@
1
- ※途中送信してしまました。現在編集中です。
1
+ ※途中送信してしまった質問を編集しました。
2
2
 
3
- しばらくの間お目汚失礼し
3
+ 更新するにかなり時が掛かってしまってごめんなさい
4
4
 
5
+
6
+
7
+ ### 前提・実現したいこと
8
+
9
+
10
+
11
+ 現在Unity2Dにて、ドット絵を使用したアクションゲームを制作しています。
12
+
13
+ かなり大雑把ですが、ゲーム全体のイメージとしてはカービィやマリオに近い感じです。
14
+
15
+
16
+
17
+ **前提:**
18
+
19
+ ・アンチエイリアスや圧縮を行いません
20
+
21
+ ・RigidBody2Dの使用
22
+
23
+ ・CinemachineBrainでの画面スクロールを使用します
24
+
25
+ ・画面サイズは 480 * 270 で、スプライトのサイズの基準は 30px * 30px です
26
+
27
+
28
+
29
+
30
+
31
+ **実現したい事:**
32
+
33
+ 題の通り、PixelPerUnit (今後は PPU と表記) を 1 に設定して、
34
+
35
+ RigidBody2Dによる物理挙動を行わせたいのですが、
36
+
37
+
38
+
39
+ PixelPerUnitを 1 に設定すると、
40
+
41
+ 目的の位置まで達するための物理挙動に使用するための数値を 30倍 にしなくてはならなくなり、
42
+
43
+ 数値の設定が非常に面倒です。
44
+
45
+
46
+
47
+ そこで、RigidBody2D (又はPhisics2D) 側に
48
+
49
+ **演算前に物理挙動に関係する全ての数値を 30倍 する**…
50
+
51
+ というような処理をさせることは可能でしょうか?
52
+
53
+
54
+
55
+ また、プレイヤーキャラの移動速度、敵キャラクターの移動速度の数値等々は
56
+
57
+ 全て ScriptableObject で管理しており、もしRigidBody2D側で処理をさせることが不可能ならば
58
+
59
+ ScriptaleObject でどうにか全てこなそうか、という事も検討しています。
60
+
61
+
62
+
63
+
64
+
65
+ ### 該当のソースコード
66
+
67
+
68
+
69
+ ```C#
70
+
71
+ public class PlayerController : BaseController
72
+
73
+ {
74
+
75
+ Rigidbody2D rigidBody2D;
76
+
77
+ PlayerData playerData; // プレイヤーキャラの移動に関するデータ(ScriptableObject)
78
+
79
+ /*
80
+
81
+ * public float MoveSpeed = 7.0f;
82
+
83
+ * public AnimationCurve DashCurve(float 0から1までの入力、0.0から1までの出力){}
84
+
85
+ */
86
+
87
+ InputManager inputManager;
88
+
89
+ /*
90
+
91
+ * public float MoveKey = Input.GetAxis("Horizontal");
92
+
93
+ */
94
+
95
+
96
+
97
+ /* ---- 省略 ---- */
98
+
99
+
100
+
101
+ void FixedUpdate()
102
+
103
+ {
104
+
105
+ /* ---- 省略 ---- */
106
+
107
+ rigidBody2D.velocity = new Vector2(inputManager.MoveKey * playerData.MoveSpeed, Physics2D.gravity.y);
108
+
109
+ /* ---- 省略 ---- */
110
+
111
+ }
112
+
113
+
114
+
115
+ ```
116
+
117
+
118
+
5
- by 投稿者
119
+ ### 試したこと
120
+
121
+
122
+
123
+ **ひとまずPixelPerUnitを30に設定して、
124
+
125
+ PixelPerfectCameraを利用しつつスクロールさせた **
126
+
127
+ →カクつきました。
128
+
129
+  キャラクターの1フレーム当たりの座標の移動量やVelocityはほぼ一定を保っていたようでしたが、
130
+
131
+  座標の数値に誤差が生じる事で、自然なスクロールにならずカクつきが起こりました。
132
+
133
+
134
+
135
+ こうした事から、PixelPerUnitを1にしようという発想に至りました。
136
+
137
+ (もし他に良い方法があれば助言してくださるととても光栄です。)
138
+
139
+
140
+
141
+ ### 補足情報(FW/ツールのバージョンなど)
142
+
143
+
144
+
145
+ バージョン: Unity 2019.4.20f1

1

2021/02/16 15:04

投稿

aaa17983
aaa17983

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,49 +1,5 @@
1
- ### 前提・実現したいこと
1
+ ※途中送信てしまいまし。現在編集中です。
2
2
 
3
+ しばらくの間お目汚し失礼します。
3
4
 
4
-
5
- ここに質問の内容を詳しく書いてください。
6
-
7
- (例)PHP(CakePHP)で●●なシステムを作っています。
8
-
9
- ■■な機能を実装中に以下のエラーメッセージが発生しました。
10
-
11
-
12
-
13
- ### 発生している問題・エラーメッセージ
14
-
15
-
16
-
17
- ```
18
-
19
- エラーメッセージ
20
-
21
- ```
22
-
23
-
24
-
25
- ### 該当のソースコード
26
-
27
-
28
-
29
- ```ここに言語名を入力
30
-
31
- ソースコード
5
+ by 投稿者
32
-
33
- ```
34
-
35
-
36
-
37
- ### 試したこと
38
-
39
-
40
-
41
- ここに問題に対して試したことを記載してください。
42
-
43
-
44
-
45
- ### 補足情報(FW/ツールのバージョンなど)
46
-
47
-
48
-
49
- ここにより詳細な情報を記載してください。