質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

0回答

330閲覧

Unity iOSゲームアプリにて加速度センサーの値をプラスマイナス反転して取得してしまう

tossymotion

総合スコア22

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2022/12/05 14:50

編集2022/12/05 14:52

前提

UnityでiOS向けにゲームを開発しています。
ゲームの内容はデバイスの加速度センサーの傾きを利用してプレイヤーであるボールを
転がすアクションゲームです。
デバイスを横にしてプレイするゲームです。(Landscape Leftに固定しています)
なおMainCameraは常にプレイヤーであるボールを一定の距離を保ちながら追従するようにしています。

環境

【テストに使ったデバイス】
iPhone XS (iOS16.1.1)

【Unity バージョン】
Unity 2019.4.3f1

【Xcode】
13.4.1

【PC】
iMac macOS Monterey 12.3.1

したいこと

デバイスを前に傾けると加速度センサーY軸のプラス値を取得してボールを前に転がしたい。

発生している問題

5回に1回ほどの頻度でデバイスを前後に傾けるとボールが意図した動きをせず
加速度センサーの軸が反転したような挙動が発生。
具体的には、デバイスを前に倒すとY軸の値はプラスの値を取得しボールは前に進むはずなのにY軸がマイナスの値を取得してしまう。ちなみにゲームのプレイ画面はLandscape Left(デバイスの左側を下にした)の状態で固定されていて正常。
加速度センサーのX,Y軸の値だけプラスマイナス逆に反転して取得しているような挙動。

該当のソースコード

void Update() { //加速度センサー取得 var dir = Vector3.zero; dir.x = Input.acceleration.y; dir.y = Input.acceleration.x; // カメラの方向から、X-Z平面の単位ベクトルを取得 Vector3 cameraForward = Vector3.Scale(Camera.main.transform.forward, new Vector3(1, 0, 1)).normalized; // 方向キーの入力値とカメラの向きから、移動方向を決定 moveForward = cameraForward * dir.x + Camera.main.transform.right * dir.y * player_acceleration_horizontal_power; void FixedUpdate() { //プレイヤーの進む力をこの数値で微調整 player_acceleration_power = 40f; //playerRbはプレイヤーのRigidbodyです playerRb.AddForce(moveForward * player_acceleration_power);

試したこと

  1. アプリの起動時のデバイスの向きが関係しているのかと思いいろんな角度で起動したが改善せず。
  2. iPhone XS (iOS16.1.1)でこのバグが発生しました。iPhone 13 (iOS15.6.1) , iPhone 8 (iOS15.5)では今のところそれぞれ40回ほどプレイしているが発生せず正常です。

大変恐縮ではございますが何かご存じの方おられましたらご教授のほどよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問