質問編集履歴

2

画像追加

2019/04/07 22:19

投稿

naotiki
naotiki

スコア28

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,8 @@
1
1
  #やりたいこと
2
2
 
3
3
  玉転がしゲームを作っていてボールをスマホのジャイロセンサーで操作する機能をつけた際平らな場所に置いたときに0(動かない状態)で操作しずらかったので少し角度を上げた状態を動かない状態にしたいのですがどうすればいいでしょうか?
4
+
5
+ ![イメージ説明](6419647c66fe61c058ad0cefbaeb0d9f.png)
4
6
 
5
7
  ```C#
6
8
 

1

コードの追加

2019/04/07 22:19

投稿

naotiki
naotiki

スコア28

test CHANGED
File without changes
test CHANGED
@@ -4,10 +4,74 @@
4
4
 
5
5
  ```C#
6
6
 
7
- //-0.8がちょうどいい角度. configはユーザーが変更できる
7
+ using UnityEngine;
8
8
 
9
+ using System.Collections;
10
+
11
+
12
+
13
+ public class PlayerController : MonoBehaviour
14
+
15
+ {
16
+
17
+ // speedを制御する
18
+
19
+ public float speed = 20;
20
+
21
+ int zyairo;
22
+
23
+ void Start (){
24
+
25
+ zyairo= PlayerPrefs.GetInt("zyairo");
26
+
27
+ }
28
+
29
+ void FixedUpdate ()
30
+
31
+ {
32
+
33
+ float x = Input.GetAxis("Horizontal");
34
+
35
+ float z = Input.GetAxis("Vertical");
36
+
37
+
38
+
39
+ Rigidbody rigidbody = GetComponent<Rigidbody>();
40
+
41
+
42
+
43
+ // xとzにspeedを掛ける
44
+
9
- ジャイロセンサーの値+0.8*int型 speed*int型 config
45
+ rigidbody.AddForce(x * speed, 0, z * speed);
46
+
47
+ }
48
+
49
+ void Update (){
50
+
51
+ var dir = Vector3.zero;
52
+
53
+ dir.x = Input.acceleration.x;
54
+
55
+ dir.y = Input.acceleration.y;
56
+
57
+ if (dir.sqrMagnitude > 1)
58
+
59
+ dir.Normalize();
60
+
61
+
62
+
63
+ // Make it move 10 meters per second instead of 10 meters per frame...
64
+
65
+ dir *= Time.deltaTime;
66
+
67
+ Rigidbody rigidbody = GetComponent<Rigidbody>();// 20 50
68
+
69
+ rigidbody.AddForce(dir.x*(speed*zyairo),0,(float)(dir.y+0.8)*speed*zyairo);
70
+
71
+ }
72
+
73
+ }
10
74
 
11
75
  ```
12
76
 
13
- こうするとなぜか動きせんでした
77
+ こうするとなぜかボールがすぐに上にいってしいました(下に行かなくなる 横移動はできる)