質問編集履歴

2 画像追加

709

709 score 20

2019/04/08 07:19  投稿

unityのジャイロセンサーの基準値について
#やりたいこと
玉転がしゲームを作っていてボールをスマホのジャイロセンサーで操作する機能をつけた際平らな場所に置いたときに0(動かない状態)で操作しずらかったので少し角度を上げた状態を動かない状態にしたいのですがどうすればいいでしょうか?
![イメージ説明](6419647c66fe61c058ad0cefbaeb0d9f.png)  
```C#
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour
{
 // speedを制御する
 public float speed = 20;
  int zyairo;
void Start (){
  zyairo= PlayerPrefs.GetInt("zyairo");
}
 void FixedUpdate ()
 {
   float x = Input.GetAxis("Horizontal");
   float z = Input.GetAxis("Vertical");
   Rigidbody rigidbody = GetComponent<Rigidbody>();
   // xとzにspeedを掛ける
   rigidbody.AddForce(x * speed, 0, z * speed);
 }
 void Update (){
     var dir = Vector3.zero;
     dir.x = Input.acceleration.x;
       dir.y = Input.acceleration.y;
   if (dir.sqrMagnitude > 1)
           dir.Normalize();
       
       // Make it move 10 meters per second instead of 10 meters per frame...
       dir *= Time.deltaTime;
   Rigidbody rigidbody = GetComponent<Rigidbody>();//            20    50
   rigidbody.AddForce(dir.x*(speed*zyairo),0,(float)(dir.y+0.8)*speed*zyairo);
 }               
}
```
こうするとなぜかボールがすぐに上にいってしまいました(下に行かなくなる 横移動はできる)
  • C#

    16123 questions

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

  • Android

    10447 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Unity

    11844 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

1 コードの追加

709

709 score 20

2019/04/07 21:39  投稿

unityのジャイロセンサーの基準値について
#やりたいこと
玉転がしゲームを作っていてボールをスマホのジャイロセンサーで操作する機能をつけた際平らな場所に置いたときに0(動かない状態)で操作しずらかったので少し角度を上げた状態を動かない状態にしたいのですがどうすればいいでしょうか?
```C#
//-0.8がちょうどいい角度.        configはユーザーが変更できる
ジャイロセンサーの値+0.8*int型 speed*int型 config
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour
{
 // speedを制御する
 public float speed = 20;
  int zyairo;
void Start (){
  zyairo= PlayerPrefs.GetInt("zyairo");
}
 void FixedUpdate ()
 {
   float x = Input.GetAxis("Horizontal");
   float z = Input.GetAxis("Vertical");
   Rigidbody rigidbody = GetComponent<Rigidbody>();
   // xとzにspeedを掛ける
   rigidbody.AddForce(x * speed, 0, z * speed);
 }
 void Update (){
     var dir = Vector3.zero;
     dir.x = Input.acceleration.x;
       dir.y = Input.acceleration.y;
   if (dir.sqrMagnitude > 1)
           dir.Normalize();
       
       // Make it move 10 meters per second instead of 10 meters per frame...
       dir *= Time.deltaTime;
   Rigidbody rigidbody = GetComponent<Rigidbody>();//            20    50
   rigidbody.AddForce(dir.x*(speed*zyairo),0,(float)(dir.y+0.8)*speed*zyairo);
 }               
}
```
こうするとなぜか動きませんでした
こうするとなぜかボールがすぐに上にいってしまいました(下に行かなくなる 横移動はできる)
  • C#

    16123 questions

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

  • Android

    10447 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Unity

    11844 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る