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

質問編集履歴

1

ご質問頂いた部分のソースコードを公開しました

2017/06/09 03:11

投稿

akikawa
akikawa

スコア13

title CHANGED
File without changes
body CHANGED
@@ -17,4 +17,108 @@
17
17
 
18
18
  ###補足情報(言語/FW/ツール等のバージョンなど)
19
19
  使用言語…C#
20
- バージョン…unity5.5.0f3
20
+ バージョン…unity5.5.0f3
21
+
22
+ ###加筆情報
23
+ ご質問を頂いたので今回の質問に関連する移動物体(プレイヤー、敵の弾)の移動処理のコードを掲載させて頂きます
24
+ プレイヤー移動処理部分
25
+ ```C#
26
+ //タッチ環境か確認
27
+ if (Input.touchSupported) {
28
+ //水平移動
29
+ if (Input.touchCount > 0) {
30
+ Touch touch = Input.GetTouch (0);
31
+ foreach (Touch t in Input.touches) {
32
+
33
+ switch(t.phase)
34
+ {
35
+ //タッチ瞬間の処理
36
+ //Prefab(弾)をプレイヤー中心のちょい上に生成
37
+ case TouchPhase.Began:
38
+ intervalTime += Time.deltaTime;
39
+ Instantiate(Prefab, new Vector3(transform.position.x, transform.position.y + 0.75f, transform.position.z), Quaternion.identity);
40
+ break;
41
+
42
+ //タッチ移動中、固定中の処理
43
+ //指の移動量に比例したx-z水平移動
44
+ //Prefab(弾)をプレイヤー中心のちょい上に生成
45
+ case TouchPhase.Moved:
46
+ case TouchPhase.Stationary:
47
+ float x = touch.deltaPosition.x;
48
+ float z = touch.deltaPosition.y;
49
+ transform.Translate(x * Vector3.right * Time.deltaTime * xspeed , Space.World);
50
+ transform.Translate(z * Vector3.forward * Time.deltaTime * zspeed , Space.World );
51
+
52
+ intervalTime += Time.deltaTime;
53
+ if (intervalTime >= 0.1f) {
54
+ intervalTime = 0.0f;
55
+ Instantiate(Prefab, new Vector3(transform.position.x, transform.position.y + 0.75f, transform.position.z), Quaternion.identity);
56
+ }
57
+ break;
58
+
59
+ case TouchPhase.Ended:
60
+ case TouchPhase.Canceled:
61
+ break;
62
+ }
63
+ }
64
+ }
65
+ //タッチ環境でない場合
66
+ if (!Input.touchSupported) {
67
+ //水平値垂直値に比例したx-z水平移動
68
+ float x = Input.GetAxis("Horizontal");
69
+ float z = Input.GetAxis("Vertical");
70
+ if(Input.GetButton("Horizontal")){
71
+ transform.Translate(4 * x * Vector3.right * Time.deltaTime * xspeed , Space.World);
72
+ }
73
+ if(Input.GetButton("Vertical")){
74
+ transform.Translate(4 * z * Vector3.forward * Time.deltaTime * zspeed , Space.World );
75
+ }
76
+
77
+ //Prefab(弾)をプレイヤー中心のちょい上に生成
78
+ intervalTime += Time.deltaTime;
79
+ if (Input.GetKey("z")) {
80
+ if (intervalTime >= 0.1f) {
81
+ intervalTime = 0.0f;
82
+ Instantiate(Prefab, new Vector3(transform.position.x, transform.position.y + 0.75f, transform.position.z), Quaternion.identity);
83
+ }
84
+ }
85
+ }
86
+ }
87
+ ```
88
+ 敵の弾(ザコ)移動処理部分
89
+ ```C#
90
+ void Start () {
91
+ //Playerタグがついてるオブジェクトに正面を向ける
92
+ target = GameObject.FindGameObjectWithTag("Player");
93
+ transform.LookAt(target.transform.position);
94
+ this.transform.rotation = Quaternion.Euler(x, transform.eulerAngles.y , z);
95
+ //?秒後に消える
96
+ Destroy(this.gameObject, 4);
97
+ }
98
+
99
+ void Update () {
100
+
101
+ //ローカル軸座標zをbulletSpeedで移動
102
+ transform.Translate( 0, 0, bulletSpeed * Time.deltaTime, Space.Self);
103
+ }
104
+ ```
105
+ 敵の弾(ボス)移動処理部分
106
+ ```C#
107
+ void Start () {
108
+ angle = 0;
109
+ bulletSpeed = 0;
110
+ //射出角度y=0,90,180,270に飛ばしx-z平面の四方へ向かせる
111
+ this.transform.rotation = Quaternion.Euler( x, y, z);
112
+ //?秒後に消える
113
+ Destroy(this.gameObject, 8);
114
+ }
115
+
116
+ void Update () {
117
+ bulletSpeed += 0.08f;
118
+ angle += 3.0f;
119
+
120
+ //x-z平面を円形が広がるような移動
121
+ transform.Translate( bulletSpeed * Mathf.Cos(angle * (Mathf.PI / 180)) * Time.deltaTime, 0,
122
+ bulletSpeed * Mathf.Sin(angle * (Mathf.PI / 180)) * Time.deltaTime, Space.Self);
123
+ }
124
+ ```