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