質問編集履歴

3

スクリプトの修正

2019/09/03 03:07

投稿

yoshiteru21
yoshiteru21

スコア44

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  スクリプトの一部を抜き取っています
6
6
 
7
- ``` //左キー: -1、右キー: 1
7
+ ``` //左キー: -1、右キー: 1
8
8
 
9
9
  float x = Input.GetAxisRaw("Horizontal");
10
10
 
@@ -74,7 +74,11 @@
74
74
 
75
75
  anim.SetBool("Jump", true);
76
76
 
77
+ //入力方向へ移動
78
+
79
+ rigidbody2D.velocity = new Vector2(x * dashSpeed, rigidbody2D.velocity.y);
80
+
77
- }
81
+ }
78
82
 
79
83
  }
80
84
 

2

スクリプト修正

2019/09/03 03:07

投稿

yoshiteru21
yoshiteru21

スコア44

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  スクリプトの一部を抜き取っています
6
6
 
7
- ```//左キー: -1、右キー: 1
7
+ ``` //左キー: -1、右キー: 1
8
8
 
9
9
  float x = Input.GetAxisRaw("Horizontal");
10
10
 
@@ -14,29 +14,117 @@
14
14
 
15
15
  {
16
16
 
17
+
17
18
 
19
+ if (!push)
18
20
 
19
- //入力方向へ移動
21
+ {
20
22
 
21
- rigidbody2D.velocity = new Vector2(x * speed, rigidbody2D.velocity.y);
23
+ push = true;
22
24
 
23
- //localScale.xを-1にすると画像が反転する
25
+ //入力方向へ移動
24
26
 
25
- Vector2 temp = transform.localScale;
27
+ rigidbody2D.velocity = new Vector2(x * speed, rigidbody2D.velocity.y);
26
28
 
27
- temp.x = x;
29
+ //localScale.xを-1にすると画像が反転する
28
30
 
29
- transform.localScale = temp;
31
+ Vector2 temp = transform.localScale;
30
32
 
31
- //Wait→Dash
33
+ temp.x = x;
32
34
 
33
- anim.SetBool("Dash", true);
35
+ transform.localScale = temp;
34
36
 
35
-
37
+ //Wait→Dash
38
+
39
+ anim.SetBool("Dash", true);
40
+
41
+ // 最初に移動キーを押した時にその方向ベクトルを取得
42
+
43
+ direction = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
44
+
45
+ nowTime = 0f;
46
+
47
+ }
48
+
49
+ else
50
+
51
+ {
52
+
53
+ // 2回目に移動キーを押した時の方向ベクトルを取得
54
+
55
+ var nowDirection = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
36
56
 
37
57
 
38
58
 
59
+ // 確認の為、最初に押した方向と2回目に押した方向の角度をコンソールに出力
60
+
61
+ Debug.Log(Vector2.Angle(nowDirection, direction));
62
+
63
+
64
+
65
+ // 押した方向がリミットの角度を越えていない かつ 制限時間内に移動キーが押されていれば走る
66
+
67
+ if (Vector2.Angle(nowDirection, direction) < limitAngle
68
+
69
+ && nowTime <= nextButtonDownTime)
70
+
71
+ {
72
+
73
+ run = true;
74
+
75
+ anim.SetBool("Jump", true);
76
+
39
- }
77
+ }
78
+
79
+ }
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+ //画面中央から左に4移動した位置をユニティちゃんが超えたら
90
+
91
+ if (transform.position.x > mainCamera.transform.position.x - 4)
92
+
93
+ {
94
+
95
+ //カメラの位置を取得
96
+
97
+ Vector3 cameraPos = mainCamera.transform.position;
98
+
99
+ //プレイヤーの位置から右に4移動した位置を画面中央にする
100
+
101
+ cameraPos.x = transform.position.x + 4;
102
+
103
+ mainCamera.transform.position = cameraPos;
104
+
105
+ }
106
+
107
+ //カメラ表示領域の左下をワールド座標に変換
108
+
109
+ Vector2 min = Camera.main.ViewportToWorldPoint(new Vector2(0, 0));
110
+
111
+ //カメラ表示領域の右上をワールド座標に変換
112
+
113
+ Vector2 max = Camera.main.ViewportToWorldPoint(new Vector2(1, 1));
114
+
115
+ //プレイヤーのポジションを取得
116
+
117
+ Vector2 pos = transform.position;
118
+
119
+ //プレイヤーのx座標の移動範囲をClampメソッドで制限
120
+
121
+ pos.x = Mathf.Clamp(pos.x, min.x + 0.5f, max.x);
122
+
123
+ transform.position = pos;
124
+
125
+ }
126
+
127
+
40
128
 
41
129
  else
42
130
 

1

質問内容の修正

2019/09/03 03:04

投稿

yoshiteru21
yoshiteru21

スコア44

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ご教授お願いいたします。
4
4
 
5
-
5
+ スクリプトの一部を抜き取っています
6
6
 
7
7
  ```//左キー: -1、右キー: 1
8
8