質問編集履歴

5

誤字

2016/02/27 14:22

投稿

yzccdefine
yzccdefine

スコア65

test CHANGED
File without changes
test CHANGED
@@ -122,9 +122,7 @@
122
122
 
123
123
  Vector3 forward = Vector3.Slerp(transform.forward, direction, rotate_speed * Time.deltaTime / Vector3.Angle(transform.forward, direction));
124
124
 
125
- transform.LookAt(transform.position + forward);
125
+ transform.LookAt(transform.position + forward)
126
-
127
-
128
126
 
129
127
  }
130
128
 

4

ソースの追加

2016/02/27 14:22

投稿

yzccdefine
yzccdefine

スコア65

test CHANGED
File without changes
test CHANGED
@@ -21,3 +21,141 @@
21
21
  下を押したら画面手前側に、
22
22
 
23
23
  左を押したら左に移動する方法をおしえてください!
24
+
25
+
26
+
27
+
28
+
29
+ +++++++++++++++++++追記++++++++++++++++
30
+
31
+
32
+
33
+ 調べてここまでは作成することができました。
34
+
35
+ 前左右は問題ないのですが、後ろだけワールド座標の動きになり、かならず同じ向きに下がります。
36
+
37
+ それに加えバックするときだけがたがたします。
38
+
39
+ ```lang-C#
40
+
41
+ using UnityEngine;
42
+
43
+ using System.Collections;
44
+
45
+
46
+
47
+ public class Player : MonoBehaviour {
48
+
49
+
50
+
51
+ Vector3 direction;
52
+
53
+ //移動速度
54
+
55
+ public float move_speed = 5f;
56
+
57
+ //回転速度
58
+
59
+ public float rotate_speed = 180f;
60
+
61
+ //ジャンプ速度
62
+
63
+ public float jump_speed = 5f;
64
+
65
+ //重力
66
+
67
+ private float gravity=20f;
68
+
69
+ //アニメーターコンポーネント
70
+
71
+ Animator anim;
72
+
73
+ //キャラコントローラー
74
+
75
+ CharacterController chara;
76
+
77
+
78
+
79
+
80
+
81
+ Transform cam_trans;
82
+
83
+ // Use this for initialization
84
+
85
+ void Start () {
86
+
87
+ chara = GetComponent<CharacterController>();
88
+
89
+ anim = GetComponentInChildren<Animator>();
90
+
91
+ cam_trans = GameObject.Find("Main Camera").GetComponent<Transform>();
92
+
93
+ }
94
+
95
+
96
+
97
+ // Update is called once per frame
98
+
99
+ void Update () {
100
+
101
+
102
+
103
+ if (chara.isGrounded)
104
+
105
+ {
106
+
107
+
108
+
109
+ // direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
110
+
111
+ direction = (cam_trans.transform.right * Input.GetAxis("Horizontal")) +
112
+
113
+ (cam_trans.transform.forward * Input.GetAxis("Vertical"));
114
+
115
+
116
+
117
+
118
+
119
+ if (direction.sqrMagnitude > 0.01f)
120
+
121
+ {
122
+
123
+ Vector3 forward = Vector3.Slerp(transform.forward, direction, rotate_speed * Time.deltaTime / Vector3.Angle(transform.forward, direction));
124
+
125
+ transform.LookAt(transform.position + forward);
126
+
127
+
128
+
129
+ }
130
+
131
+
132
+
133
+ if (Input.GetKeyDown(KeyCode.Space))
134
+
135
+ {
136
+
137
+ direction.y = jump_speed;
138
+
139
+ }
140
+
141
+ }
142
+
143
+
144
+
145
+ direction.y -= gravity * Time.deltaTime;
146
+
147
+
148
+
149
+ chara.Move(direction * Time.deltaTime * move_speed);
150
+
151
+ anim.SetFloat("Speed", chara.velocity.magnitude);
152
+
153
+ }
154
+
155
+
156
+
157
+ }
158
+
159
+
160
+
161
+ ```

3

変更

2016/02/26 13:28

投稿

yzccdefine
yzccdefine

スコア65

test CHANGED
@@ -1 +1 @@
1
- unity キャラ視点での移動方法
1
+ unity 3Dキャラ視点での移動方法
test CHANGED
File without changes

2

変更

2016/02/25 17:40

投稿

yzccdefine
yzccdefine

スコア65

test CHANGED
File without changes
test CHANGED
@@ -21,7 +21,3 @@
21
21
  下を押したら画面手前側に、
22
22
 
23
23
  左を押したら左に移動する方法をおしえてください!
24
-
25
-
26
-
27
- もう少し自分でも考えてみようと思います。

1

追加

2016/02/25 17:02

投稿

yzccdefine
yzccdefine

スコア65

test CHANGED
File without changes
test CHANGED
@@ -21,3 +21,7 @@
21
21
  下を押したら画面手前側に、
22
22
 
23
23
  左を押したら左に移動する方法をおしえてください!
24
+
25
+
26
+
27
+ もう少し自分でも考えてみようと思います。