void FixedUpdate() { var newPos = transform.position; var newHeight = Mathf.Min(transform.position.y + reserveMoveHeight, heightLimit); var up = newHeight > newPos.y; var down = newHeight < newPos.y; reserveMoveHeight = 0; newPos.y = newHeight; newPos.x += frontMoveSpeed * Time.fixedDeltaTime * 60; transform.position = newPos; // 地面に反射した反動や、ミサイルの反動で、物理挙動的に上向きや左向きに進んでいたら力を徐々に打ち消す // ミサイルに当たってしばらくは打ち消さない if (!hitMissile && (rigid.velocity.y > 0 || rigid.velocity.x < 0)) { rigid.velocity *= 0.5f; } var ringSound = prevRingSoundTime + flyingSeInterval > Time.time; if (up) { pAnim.RisingAnim(); if (ringSound) { audio.PlayOneShot(upClip); prevRingSoundTime = Time.time; } } else { pAnim.NormalAnim(); } if (down) { if (ringSound) { audio.PlayOneShot(downClip); prevRingSoundTime = Time.time; } } }