質問編集履歴
2
ソースコード修正のため
title
CHANGED
File without changes
|
body
CHANGED
@@ -16,17 +16,34 @@
|
|
16
16
|
### 該当のソースコード
|
17
17
|
|
18
18
|
```JavaScript
|
19
|
+
if(collisions){
|
19
|
-
if(
|
20
|
+
if(playdirect.z < 0){ //前側
|
21
|
+
if(max.z < max2.z && velocity.z < 0){direction.z = 0}
|
22
|
+
flags[0] = true;
|
23
|
+
flags[1] = false;
|
24
|
+
|
25
|
+
|
20
|
-
if(playdirect.z
|
26
|
+
} else if(playdirect.z > 0){ //後ろ側
|
21
|
-
flags[0]=true; //フラグ0をオンにする
|
22
|
-
}
|
23
|
-
|
27
|
+
if(min.z > min2.z && velocity.z > 0) {direction.z = 0}
|
24
|
-
flags[1] = true;
|
28
|
+
flags[1] = true;
|
29
|
+
flags[0] = false;
|
30
|
+
|
25
31
|
}
|
26
|
-
|
27
|
-
|
32
|
+
if(playdirect.x < 0){ //右側
|
33
|
+
flags[2] = true;
|
28
|
-
|
34
|
+
flags[3] = false;
|
35
|
+
|
36
|
+
|
37
|
+
}
|
38
|
+
if(playdirect.x > 0){ //左側
|
39
|
+
flags[3] = true;
|
29
|
-
|
40
|
+
flags[2] = false;
|
41
|
+
|
42
|
+
}
|
43
|
+
if(max.x < max2.x && velocity.x < 0) {direction.x = 0} // 左右壁
|
44
|
+
if(min.x > min2.x && velocity.x > 0) {direction.x = 0}
|
45
|
+
} else {
|
46
|
+
flags[0] = flags[1] = flags[2]= flags[3] = false;
|
30
47
|
}
|
31
48
|
```
|
32
49
|
|
@@ -34,7 +51,6 @@
|
|
34
51
|
if(!flags[0] && !flags[1] && !flags[2] && !flags[3]){
|
35
52
|
controls.moveForward(-velocity.z * delta);
|
36
53
|
controls.moveRight(-velocity.x * delta);
|
37
|
-
console.log("どこにも接触していないよ")
|
38
54
|
}
|
39
55
|
if(flags[0] && (moveR || moveL)){ //前側なら
|
40
56
|
controls.moveRight(-velocity.x * delta);
|
@@ -42,9 +58,10 @@
|
|
42
58
|
controls.moveForward(-velocity.z * delta);
|
43
59
|
}
|
44
60
|
if(moveF && (moveR || moveL)){
|
45
|
-
controls.moveRight(
|
61
|
+
controls.moveRight(-velocity.z * delta)
|
46
62
|
}
|
63
|
+
|
47
|
-
}else if(flags[1] && (moveR || moveL)){ //後ろ側なら
|
64
|
+
} else if(flags[1] && (moveR || moveL)){ //後ろ側なら
|
48
65
|
controls.moveRight(-velocity.x * delta);
|
49
66
|
if(moveF){
|
50
67
|
controls.moveForward(-velocity.x * delta);
|
@@ -52,25 +69,7 @@
|
|
52
69
|
if(moveB && (moveR || moveL)){
|
53
70
|
controls.moveRight((-velocity.x / 10) * delta)
|
54
71
|
}
|
55
|
-
}
|
56
|
-
/*if(flags[2] && (moveF || moveB)) {//右側かつ前側
|
57
|
-
controls.moveForward(-velocity.z * delta);
|
58
|
-
if(moveL){
|
59
|
-
controls.moveRight(-velocity.x * delta);
|
60
|
-
}
|
61
|
-
if(moveR && (moveF || moveB)){
|
62
|
-
controls.moveForward((-velocity.z / 10) * delta);
|
63
|
-
}
|
64
|
-
} else if(flags[3] && (moveF || moveB)) { //左側なら
|
65
|
-
controls.moveForward(-velocity.z * delta);
|
66
|
-
if(moveR){
|
67
|
-
controls.moveRight(-velocity.x * delta);
|
68
|
-
}
|
69
|
-
if(moveL && (moveF || moveB)){
|
70
|
-
controls.moveForward(-velocity.z / 10 * delta);
|
71
|
-
}
|
72
72
|
}
|
73
|
-
*/
|
74
73
|
```
|
75
74
|
|
76
75
|
### 試したこと・調べたこと
|
1
ソースコードに修正を加えたため
title
CHANGED
File without changes
|
body
CHANGED
@@ -31,21 +31,46 @@
|
|
31
31
|
```
|
32
32
|
|
33
33
|
```JavaScript
|
34
|
-
if(flags[0] && !flags[1]){
|
34
|
+
if(!flags[0] && !flags[1] && !flags[2] && !flags[3]){
|
35
|
-
controls.moveRight(-velocity.x * delta); //左右どちらかに動けるようにする
|
36
|
-
flags[1]=false;
|
37
|
-
} else if(!flags[0] && !flags[1]){ //接触していない時
|
38
|
-
controls.moveForward(-velocity.z * delta);
|
35
|
+
controls.moveForward(-velocity.z * delta);
|
39
|
-
controls.moveRight(-velocity.x * delta);
|
36
|
+
controls.moveRight(-velocity.x * delta);
|
37
|
+
console.log("どこにも接触していないよ")
|
38
|
+
}
|
40
|
-
|
39
|
+
if(flags[0] && (moveR || moveL)){ //前側なら
|
41
|
-
controls.
|
40
|
+
controls.moveRight(-velocity.x * delta);
|
42
|
-
|
41
|
+
if(moveB){
|
43
|
-
} else if(flags[0] && flags[1]){ //どちらとも、つまりは斜めになっていたばあい
|
44
|
-
if(playdirect.z >= 0.9 && moveB){ //前側をむいて、Sキーが押されていたら
|
45
|
-
controls.moveForward(-velocity.z * delta);
|
42
|
+
controls.moveForward(-velocity.z * delta);
|
46
43
|
}
|
47
|
-
|
44
|
+
if(moveF && (moveR || moveL)){
|
45
|
+
controls.moveRight((-velocity.x / 10) * delta)
|
46
|
+
}
|
47
|
+
}else if(flags[1] && (moveR || moveL)){ //後ろ側なら
|
48
|
+
controls.moveRight(-velocity.x * delta);
|
49
|
+
if(moveF){
|
50
|
+
controls.moveForward(-velocity.x * delta);
|
51
|
+
}
|
52
|
+
if(moveB && (moveR || moveL)){
|
53
|
+
controls.moveRight((-velocity.x / 10) * delta)
|
54
|
+
}
|
55
|
+
}
|
56
|
+
/*if(flags[2] && (moveF || moveB)) {//右側かつ前側
|
57
|
+
controls.moveForward(-velocity.z * delta);
|
58
|
+
if(moveL){
|
59
|
+
controls.moveRight(-velocity.x * delta);
|
60
|
+
}
|
61
|
+
if(moveR && (moveF || moveB)){
|
62
|
+
controls.moveForward((-velocity.z / 10) * delta);
|
63
|
+
}
|
64
|
+
} else if(flags[3] && (moveF || moveB)) { //左側なら
|
65
|
+
controls.moveForward(-velocity.z * delta);
|
66
|
+
if(moveR){
|
67
|
+
controls.moveRight(-velocity.x * delta);
|
68
|
+
}
|
69
|
+
if(moveL && (moveF || moveB)){
|
70
|
+
controls.moveForward(-velocity.z / 10 * delta);
|
71
|
+
}
|
48
72
|
}
|
73
|
+
*/
|
49
74
|
```
|
50
75
|
|
51
76
|
### 試したこと・調べたこと
|