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

回答編集履歴

2

追記

2020/07/28 06:55

投稿

Y0241-N
Y0241-N

スコア1066

answer CHANGED
@@ -25,7 +25,7 @@
25
25
  }
26
26
  ```
27
27
 
28
- スクリプトの内容はかなり簡素な作りで機能すると思われるので、勉強すればご自身で作成できるようになると思います。
28
+ スクリプトの内容はかなり簡素な作りで機能すると思われるので、勉強すればご自身で作成できるようになると思います。しかし、なぜこの作りで大丈夫なのか、どこに問題があったのかを理解できないと今後も躓いてしまうと思うので、分からない部分は調べるなどで少しずつ自力を身に着けていってください。
29
29
 
30
30
  ```C#
31
31
  using UnityEngine;

1

追記

2020/07/28 06:55

投稿

Y0241-N
Y0241-N

スコア1066

answer CHANGED
@@ -1,3 +1,74 @@
1
+ 【追記 2020/07/28】
2
+ まずC#のスコープの機能を理解されていないようなので、スクリプトを作成する前に初歩的なC#の仕組みから勉強することをお勧めします。私は[このサイト](https://paiza.jp/works/cs/primer/beginner-cs1)で初歩的な知識を身に付けました。
3
+
4
+ スコープ機能について簡単に説明すると以下のようなものです。
5
+
6
+ ```C#
7
+ public class CarUserControl : MonoBehaviour
8
+ {
9
+ int x;//このXをX1とする、このX1はこのカッコ内より内側のカッコで使用できる
10
+ void a()
11
+ {
12
+ x = 10;//このXはX1を参照している
13
+ }
14
+
15
+ void b()
16
+ {
17
+ int x; //このXはX1とは別物として認識される
18
+ int y;//このYはb()のカッコ内でしか使用できない、このカッコの外側では認識できない
19
+ }
20
+
21
+ void c()
22
+ {
23
+ y = 10;//参照できずエラーが発生する
24
+ }
25
+ }
26
+ ```
27
+
28
+ スクリプトの内容はかなり簡素な作りで機能すると思われるので、勉強すればご自身で作成できるようになると思います。
29
+
30
+ ```C#
31
+ using UnityEngine;
32
+ using UnityStandardAssets.CrossPlatformInput;
33
+
34
+ namespace UnityStandardAssets.Vehicles.Car
35
+ {
36
+ [RequireComponent(typeof(CarController))]
37
+ public class CarUserControl : MonoBehaviour
38
+ {
39
+ private CarController m_Car;
40
+ public float AccelPower;
41
+ public float BrakePower;
42
+ private float handbrake;
43
+ private float h;
44
+
45
+ private void Awake()
46
+ {
47
+ m_Car = GetComponent<CarController>();
48
+ }
49
+
50
+ private void FixedUpdate()
51
+ {
52
+ h = CrossPlatformInputManager.GetAxis("Horizontal");
53
+
54
+ var a = CrossPlatformInputManager.GetAxis("accel");
55
+ var b = CrossPlatformInputManager.GetAxis("braek");
56
+
57
+ var NewAP = a * AccelPower;
58
+ var NewBP = -b * BrakePower;
59
+
60
+ #if !MOBILE_INPUT
61
+ handbrake = CrossPlatformInputManager.GetAxis("Jump");
62
+ m_Car.Move(h, NewAP, NewBP, handbrake);
63
+ #else
64
+ m_Car.Move(h, NewAP, NewBP, 0f);
65
+ #endif
66
+ }
67
+ }
68
+ }
69
+ ```
70
+
71
+ -----
1
72
  これは単純に計算値の問題だと思います、
2
73
  a = a / 2 - 0.5f;
3
74
  b = b / 2 + 0.5f;