###前提・実現したいこと
Unity5.6でオブジェクトを持ち、
線形補間で一定間隔スライドさせようとしています。
プレイヤーがオブジェクトを持ち
スライドさせるところまではできましたが
位置が元の位置まで戻ってしまいます。
###発生している問題・エラーメッセージ
・スライド実行時に位置が元の位置まで戻ってしまう
・不自然なスライド
大きさを元にインターバルを取り、その分移動させていますが
移動量が一定なだけでオブジェクトの端を通りすぎてしまう。
###該当のソースコード
C#
1public class SlideObject : BaseObject 2{ 3 // 分割数 4 [SerializeField] 5 private int split_ = 1; 6 7 // インターバル 8 private float middlePoint_; 9 // 最初の位置からの差分 10 private float sub_; 11 // 大きさ 12 private float endPoint_; 13 // 移動時間 14 private float time_; 15 // 移動速度 16 [SerializeField] 17 private float speed_ = 0.5f; 18 19 // 補間用変数 20 Vector3 start_; 21 Vector3 movement_; 22 Vector3 result_; 23 24 // Use this for initialization 25 public void Awake() 26 { 27 base.Awake(); 28 // 大きさ 29 endPoint_ = transform.localScale.x; 30 // 分割数を求める 31 middlePoint_ = endPoint_ / split_; 32 // 補間用変数初期化 33 start_ = transform.position; 34 movement_ = transform.position; 35 time_ = 0; 36 } 37 38 // Update is called once per frame 39 public void Update() 40 { 41 base.Update(); 42 if (time_ < 1.0f) 43 time_ += Time.deltaTime * speed_; 44 else 45 { 46 time_ = 1.0f; 47 start_ = transform.position; 48 } 49 50 // プレイヤーの手持ちフラグがオンの時は線形補間 51 // オフの時はなにもしない。 52 var parent = transform.root.transform.GetComponent<Player>(); 53 if (!parent) return; 54 if (parent.GetHaveFlag()) 55 { 56 57 } 58 else 59 { 60 // 移動 61 if (Mathf.Abs(sub_) < endPoint_) 62 { 63 result_ = Vector3.Lerp(start_, movement_, time_); 64 transform.position = new Vector3(result_.x, transform.position.y, result_.z); 65 } 66 } 67 } 68 69 public override void Gimmick() 70 { 71 if (time_ < 1) return; 72 73 if (Input.GetKeyDown(KeyCode.D)) 74 { 75 Slide(middlePoint_); 76 } 77 if (Input.GetKeyDown(KeyCode.A)) 78 { 79 Slide(-middlePoint_); 80 } 81 } 82 /// <summary> 83 /// スライドさせる 84 /// </summary> 85 /// <param name="Slide"></param> 86 private void Slide(float middlepoint) 87 { 88 movement_ = new Vector3(transform.position.x + middlepoint, transform.position.y, transform.position.z); 89 sub_ += middlepoint; 90 time_ = 0; 91 } 92 93 94}
###補足情報(言語/FW/ツール等のバージョンなど)
C# Unity5.6
ヒントだけでも試しますのでよろしくお願いします
もしコード内の処理でわからないことがあれば返信します
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/21 11:15
2017/05/21 11:42
2017/05/21 13:12