質問編集履歴

1

プレイヤーと床の衝突時に実現させたい挙動を変更した。

2019/09/19 16:25

投稿

nikumanumaiumai
nikumanumaiumai

スコア5

test CHANGED
@@ -1 +1 @@
1
- Unity kinematic設定のプレイヤーが床をすり抜けてます
1
+ Unity kinematic設定のプレイヤーが床と接触たときに色が変わるようにした
test CHANGED
@@ -4,11 +4,13 @@
4
4
 
5
5
  プレイヤーは空中を浮遊させたいのでRigidBody2DのBodyTypeをkinematicにしています。
6
6
 
7
- また床も重力がかかって下に落ちないようにkinematicにしています。
7
+ また床も重力のせいで下に落ちないようにkinematicにしています。
8
8
 
9
- プレイヤーは矢印キーで上下左右に動くように設定したのですが、床と接触したときはそれ以上、下移動しようCollisionモードのOnCollisionStay2Dで制御しようと試みたのですが上手くいかず、そのまま床を通抜けてしいますどうしたらすり抜けなくできるでしょうか。
9
+ プレイヤーは矢印キーで上下左右に動くように設定し、床と接触したときにプレイヤーの色が青にようCollisionモードのOnCollisionStay2Dで制御しようと試みたのですが上手くいかず、色が変わりません
10
10
 
11
- ちなみにプレイヤーと床両方にPolygon collider 2Dをアタッチして、IsTriggerの項目にチェックは入れていません。
11
+ ちなみにプレイヤーと床両方にPolygon collider 2Dをアタッチして、IsTriggerの項目にチェックは入れていません。そして、プレイヤーをkinematicからdynamicに変更すると上手くいって青になります。
12
+
13
+ どうしたらkinematicのまま青に変えることができるでしょうか。
12
14
 
13
15
  教えていただけたら嬉しいです。
14
16
 
@@ -42,8 +44,6 @@
42
44
 
43
45
  Rigidbody2D rigid2D;
44
46
 
45
- float progression;
46
-
47
47
 
48
48
 
49
49
  // Start is called before the first frame update
@@ -72,9 +72,7 @@
72
72
 
73
73
  key = -1;
74
74
 
75
- progression = 0.1f;
76
-
77
- transform.Translate(-progression, 0.0f, 0.0f);
75
+ transform.Translate(-0.1f, 0.0f, 0.0f);
78
76
 
79
77
  }
80
78
 
@@ -82,25 +80,19 @@
82
80
 
83
81
  key = 1;
84
82
 
85
- progression = 0.1f;
86
-
87
- transform.Translate(progression, 0.0f, 0.0f);
83
+ transform.Translate(0.1f, 0.0f, 0.0f);
88
84
 
89
85
  }
90
86
 
91
87
  if(Input.GetKey(KeyCode.UpArrow)) {
92
88
 
93
- progression = 0.1f;
94
-
95
- transform.Translate(0.0f, progression, 0.0f);
89
+ transform.Translate(0.0f, 0.1f, 0.0f);
96
90
 
97
91
  }
98
92
 
99
93
  if(Input.GetKey(KeyCode.DownArrow)) {
100
94
 
101
- progression = 0.1f;
102
-
103
- transform.Translate(0.0f, -progression, 0.0f);
95
+ transform.Translate(0.0f, -0.1f, 0.0f);
104
96
 
105
97
  }
106
98
 
@@ -130,11 +122,13 @@
130
122
 
131
123
  {
132
124
 
133
- progression = 0.0f;
125
+ if(collision.gameObject.name == "Floor"){
126
+
127
+ GetComponent<Renderer>().material.color = Color.blue;
128
+
129
+ }
134
130
 
135
131
  }
136
-
137
- }
138
132
 
139
133
  ```
140
134