質問するログイン新規登録

質問編集履歴

2

ソースコード修正のため

2024/10/10 13:06

投稿

falcon_function
falcon_function

スコア10

title CHANGED
File without changes
body CHANGED
@@ -16,17 +16,34 @@
16
16
  ### 該当のソースコード
17
17
 
18
18
  ```JavaScript
19
+ if(collisions){
19
- if(collisions){ //接触していたら
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 <= 0 || playdirect.z >= 0){ //前方もしくは方を向いていたら
26
+ } else if(playdirect.z > 0){ //後ろ側
21
- flags[0]=true; //フラグ0をオンにする
22
- }
23
- if(playdirect.x <= -0.5 || playdirect.x >= 0.5){ //左右どちらかを向いていたら
27
+ if(min.z > min2.z && velocity.z > 0) {direction.z = 0}
24
- flags[1] = true; //フラグ1をオンにする
28
+ flags[1] = true;
29
+ flags[0] = false;
30
+
25
31
  }
26
-
27
- } else { //接触していない時
32
+ if(playdirect.x < 0){ //右側
33
+ flags[2] = true;
28
- flags[0] = false;
34
+ flags[3] = false;
35
+
36
+
37
+ }
38
+ if(playdirect.x > 0){ //左側
39
+ flags[3] = true;
29
- flags[1] = false;
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((-velocity.x / 10) * delta)
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

ソースコードに修正を加えたため

2024/10/08 11:03

投稿

falcon_function
falcon_function

スコア10

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
- } else if(flags[1] && !flags[0]){ //左右のみ接触していた
39
+ if(flags[0] && (moveR || moveL)){ //前側な
41
- controls.moveForward(-velocity.z * delta); //前後どちらかに動けるようにする。
40
+ controls.moveRight(-velocity.x * delta);
42
- flags[0] = false;
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
  ### 試したこと・調べたこと