こんにちは、只今ゲーム制作をしております。
そこで詰まってしまったので、質問させていただきます。
現在スペースを押したら、ジャンプしたようにしたいのですが、自分なりにコードを書いてみました
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class CarContrl : MonoBehaviour 6{ 7 8 9 // 車のモデル 注意 子オブジェクトです。 10 [SerializeField] private Vector3 modelPos; 11 12 void Update() 13 { 14 if (Input.GetKeyDown(KeyCode.Space)) 15 { 16 print("スペースを押した"); 17 StartCoroutine(CarJump()); 18 } 19 } 20 21 22 23 } 24 /// <summary> 25 /// 車をジャンプする 26 /// </summary> 27 private IEnumerator CarJump() 28 { 29 print("ジャンプ"); 30 var CarJumpPos = 0; 31 var CarJumpMax = 10; 32 var CarJumpPower = 2; 33 34 while (CarJumpPos < CarJumpMax) 35 { 36 CarJumpPos += CarJumpPower; 37 modelPos = 38 new Vector3(modelPos.x, modelPos.y + CarJumpPos, modelPos.z); 39 print("ジャンプしている"); 40 yield return null; 41 } 42 43 while (CarJumpPos >= 0) 44 { 45 CarJumpPos -= CarJumpPower; 46 modelPos -= new Vector3(modelPos.x, modelPos.y - CarJumpPos, modelPos.z); 47 } 48 } 49}
やった事
ジャンプするのは、コルーチンで実行しております。
コードの通り、スペースを押したら、一定値まで上がり、そのあと0に戻るというものです。
注意なのですが、フィールドの modelPos というのは子オブジェクトなためこう言うコードにしております。(親に車を動かすコードが書いてあります。)
スペースを押してみても、動きませんが、コンソールにはスペースを押したしかでません。
コードが見にくいのですが、あまりいいやり方ではないです。うまいコードが欠けていないのはわかっております。
なので、お力をお貸しいただけないでしょうか?
解説やコメントなど加えてくださるとありがたいです。
ーーーーーーーーーーーーーーー 修正後---------------------------------
C#
1 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6public class CarContrl : MonoBehaviour 7{ 8 9 10 // 車のモデル 注意 子オブジェクトです。 11 [SerializeField] private Transform modelPos; 12 void Update() 13 { 14 if (Input.GetKeyDown(KeyCode.Space)) 15 { 16 print("スペースを押した"); 17 StartCoroutine(CarJump()); 18 } 19 } 20 21 22 23 } 24 /// <summary> 25 /// 車をジャンプする 26 /// </summary> 27 private IEnumerator CarJump() 28 { 29 print("ジャンプ"); 30 var CarJumpPos = 0; 31 var CarJumpMax = 50; 32 var CarJumpPower = 2; 33 34 while (CarJumpPos < CarJumpMax) 35 { 36 CarJumpPos += CarJumpPower; 37 modelPos.transform.localPosition 38 += new Vector3(transform.localPosition.x, transform.localPosition.y + CarJumpPower, transform.localPosition.z); 39 print("ジャンプしている"); 40 yield return null; 41 } 42 43 while (CarJumpPos > 0) 44 { 45 CarJumpPos -= CarJumpPower; 46 modelPos.transform.localPosition -= new Vector3(transform.localPosition.x, transform.localPosition.y + CarJumpPower, transform.localPosition.z); 47 } 48 } 49}
これで動くようにはなったのですが、Z軸方向に飛んでしまいます。
何故でしょうか?ご意見ください。他にいいコードの書き方を教えてくだされば幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/06 11:27 編集
2021/01/06 11:25
2021/01/07 00:00
2021/01/07 09:53
2021/01/07 09:59 編集
2021/01/07 10:27 編集
2021/01/07 10:43
2021/01/07 10:54