こんにちは!
まず前提がおかしいです。
GameobjectはFloat値を持ちません。
ゆえにオブジェクトにつけられたコンポーネント、ひいてはスクリプトから獲得することになります。
今回は別のゲームオブジェクトのあるコンポーネントのfloat値を操作したいのだと仮定して話を進めます。
C#
1using System.Collections;
2using System.Collections.Generic;
3using UnityEngine;
4
5public class Test : MonoBehaviour
6{
7 public float h;
8 //獲得したいフロート
9}
そしてこのスクリプトをAというゲームオブジェクトにつけたとして、このAからfloat hを獲得する方法を書きます。
C#
1using System.Collections;
2using System.Collections.Generic;
3using UnityEngine;
4
5public class Test2 : MonoBehaviour
6{
7 public GameObject A;
8 //ゲームオブジェクトAを獲得。インスペクタで設定。
9 //ここからTestコンポーネントを獲得しfloat hを手繰り寄せる。
10 Test tes;
11 //Testコンポーネントを獲得するための入れ物
12
13 void Start()
14 {
15 tes = A.GetComponent<Test>();
16 //ゲームオブジェクトAからTest型のコンポーネントを獲得
17 }
18
19 void Example()
20 {
21 tes.h = Input.GetAxisRaw("Horizontal");
22 //テストクラスに含まれているfloat型のhに代入
23 }
24}
25
しかし多分このケースならオブジェクトAにてInputを検出した方がよさそうですね。
あと老婆心ながら移動にTransform.Translate()を使うのはお勧めしません。
イベントシーンなどなら別ですが、Inputを利用しているところを見ればそうではないでしょう。
簡単に言うならTranslateは一歩先の位置に瞬間移動し続けることで移動し、AddForceやVelocityによる移動は一歩一歩歩いて移動しています。
瞬間移動は当たり判定で不安定ですし、処理的にも重くて物理挙動などの再現にもすぐれません。
何か特別な理由がない限り辞めておくのが無難かもしれません。
仮説に基づいてお話ししましたが、何か間違いがありましたらお申し付けください。
あとおせっかいすみません。
失礼します。