質問編集履歴
3
switch文の後に追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -14,9 +14,6 @@
|
|
14
14
|
ご指摘お願いいたします。
|
15
15
|
|
16
16
|
```C#
|
17
|
-
//private Rigidbody2D body2d;
|
18
|
-
//public float speed = 2;
|
19
|
-
//---------------
|
20
17
|
using System.Collections;
|
21
18
|
using System.Collections.Generic;
|
22
19
|
using Unity.Mathematics;
|
@@ -40,6 +37,8 @@
|
|
40
37
|
float savey = 0;
|
41
38
|
float x, y;
|
42
39
|
|
40
|
+
|
41
|
+
|
43
42
|
void Start()
|
44
43
|
{
|
45
44
|
//このスクリプトがアタッチされたゲームオブジェクトの動作をいただく
|
@@ -48,8 +47,13 @@
|
|
48
47
|
this.spriteRenderer = GetComponent<SpriteRenderer>();
|
49
48
|
}
|
50
49
|
|
50
|
+
|
51
|
+
|
51
52
|
void Update()
|
52
53
|
{
|
54
|
+
|
55
|
+
Debug.Log(move);
|
56
|
+
|
53
57
|
if (savex == 0 && move == false)
|
54
58
|
{
|
55
59
|
x = Input.GetAxisRaw("Horizontal");
|
@@ -66,14 +70,16 @@
|
|
66
70
|
savey = y;
|
67
71
|
move = true;
|
68
72
|
}
|
69
|
-
|
73
|
+
|
70
74
|
if (move == true)
|
71
75
|
{
|
72
|
-
Vector2 direction = new Vector2(
|
76
|
+
Vector2 direction = new Vector2(savex, savey).normalized;
|
73
|
-
body2d.
|
77
|
+
body2d.velocity = direction * speed;
|
74
78
|
}
|
79
|
+
|
75
80
|
}
|
81
|
+
|
76
|
-
private void OnCollisionEnter2D(Collision2D col)
|
82
|
+
private void OnCollisionEnter2D(Collision2D col)
|
77
83
|
{
|
78
84
|
switch (col.gameObject.tag)
|
79
85
|
{
|
@@ -94,9 +100,14 @@
|
|
94
100
|
|
95
101
|
case "black":
|
96
102
|
spriteRenderer.sprite = SpriteBlack;
|
103
|
+
move = false;
|
97
104
|
break;
|
98
105
|
}
|
106
|
+
savex = 0;
|
107
|
+
savey = 0;
|
99
108
|
}
|
100
109
|
}
|
101
110
|
|
111
|
+
|
112
|
+
|
102
113
|
```
|
2
全文載せました。スクリプトはプレイヤーキャラクターにアタッチしています。
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,18 +7,96 @@
|
|
7
7
|
|
8
8
|
方法を、どなたか教えて下さい。よろしくお願いします。
|
9
9
|
|
10
|
+
|
11
|
+
追記:
|
12
|
+
教えていただいた部分を参考にして書かせて頂きました。
|
13
|
+
まっすぐ壁にぶつかるまで移動できるようになったのですが、その後全く動かなくなりました。
|
14
|
+
ご指摘お願いいたします。
|
15
|
+
|
10
16
|
```C#
|
11
17
|
//private Rigidbody2D body2d;
|
12
18
|
//public float speed = 2;
|
13
19
|
//---------------
|
20
|
+
using System.Collections;
|
21
|
+
using System.Collections.Generic;
|
22
|
+
using Unity.Mathematics;
|
23
|
+
using UnityEngine;
|
24
|
+
using UnityEngine.UI;
|
25
|
+
|
26
|
+
public class PlayerBox2 : MonoBehaviour
|
27
|
+
{
|
28
|
+
[SerializeField] private Sprite SpriteRed = default;
|
29
|
+
[SerializeField] private Sprite SpriteBlue = default;
|
30
|
+
[SerializeField] private Sprite SpriteGreen = default;
|
31
|
+
[SerializeField] private Sprite SpriteBlack = default;
|
32
|
+
|
33
|
+
public float speed = 2;
|
34
|
+
private Rigidbody2D body2d;
|
35
|
+
private Animator anima;
|
36
|
+
private SpriteRenderer spriteRenderer;
|
37
|
+
|
38
|
+
bool move = false;
|
39
|
+
float savex = 0;
|
40
|
+
float savey = 0;
|
41
|
+
float x, y;
|
42
|
+
|
43
|
+
void Start()
|
44
|
+
{
|
45
|
+
//このスクリプトがアタッチされたゲームオブジェクトの動作をいただく
|
46
|
+
this.body2d = GetComponent<Rigidbody2D>();
|
47
|
+
this.anima = GetComponent<Animator>();
|
48
|
+
this.spriteRenderer = GetComponent<SpriteRenderer>();
|
49
|
+
}
|
50
|
+
|
14
51
|
void Update()
|
15
52
|
{
|
16
|
-
if(
|
53
|
+
if (savex == 0 && move == false)
|
17
54
|
{
|
18
|
-
|
55
|
+
x = Input.GetAxisRaw("Horizontal");
|
19
|
-
|
56
|
+
y = Input.GetAxisRaw("Vertical");
|
57
|
+
}
|
58
|
+
|
59
|
+
if (x != 0)
|
60
|
+
{
|
61
|
+
savex = x;
|
62
|
+
move = true;
|
63
|
+
}
|
64
|
+
if (y != 0)
|
65
|
+
{
|
66
|
+
savey = y;
|
67
|
+
move = true;
|
68
|
+
}
|
69
|
+
|
70
|
+
if (move == true)
|
71
|
+
{
|
20
72
|
Vector2 direction = new Vector2(x, y).normalized;
|
21
|
-
body2d.AddForce
|
73
|
+
body2d.AddForce(direction * speed); //body2d.addforce = の形では動かなかったので変更
|
22
74
|
}
|
23
75
|
}
|
76
|
+
private void OnCollisionEnter2D(Collision2D col)//移動先の壁の色にスプライトを変更し、moveをfalseにして次の移動に備える
|
77
|
+
{
|
78
|
+
switch (col.gameObject.tag)
|
79
|
+
{
|
80
|
+
case "blue":
|
81
|
+
spriteRenderer.sprite = SpriteBlue;
|
82
|
+
move = false;
|
83
|
+
break;
|
84
|
+
|
85
|
+
case "red":
|
86
|
+
spriteRenderer.sprite = SpriteRed;
|
87
|
+
move = false;
|
88
|
+
break;
|
89
|
+
|
90
|
+
case "green":
|
91
|
+
spriteRenderer.sprite = SpriteGreen;
|
92
|
+
move = false;
|
93
|
+
break;
|
94
|
+
|
95
|
+
case "black":
|
96
|
+
spriteRenderer.sprite = SpriteBlack;
|
97
|
+
break;
|
98
|
+
}
|
99
|
+
}
|
100
|
+
}
|
101
|
+
|
24
102
|
```
|
1
タグにC#を追加
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|