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

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

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

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

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

Unity

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

Q&A

解決済

1回答

6518閲覧

【C#】Unityにて、CubeオブジェクトをZ軸に反復移動させたいが変数の変換エラーが起こる

_____________

総合スコア8

C#

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

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

Unity

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

0グッド

0クリップ

投稿2020/05/12 03:19

やりたいこと

  • Unityで、Z軸を反復移動させてコインを押し出したい

エラー内容
Assets\PusherScript.cs(30,12): error CS1503: Argument 3: cannot convert from 'double' to 'float'

環境
OS : Windows 10 Home
テキストエディタ : Visual Studio 2019 Community
Unityバージョン : 2019.3
プロジェクトの種類 : 3D

スクリプトで処理していること
・常にZ軸を反復移動させる

オブジェクトの設定
・無重力
・PusherScript.csを登録済み
・オブジェクトと合同な当たり判定

C#

1//PusherScript.cs 2using UnityEngine; 3using System.Collections; 4 5public class PusherScript : MonoBehaviour 6{ 7 Vector3 initPosition; 8 Vector3 newPosition; 9 10 // Use this for initialization 11 void Start() 12 { 13 /* 14 このスクリプトを付けたゲームオブジェクト(this)の 15 トランスフォームコンポーネント(transform)の 16 位置(position)をinitPositionに格納している。 17 */ 18 initPosition = this.transform.position; 19 } 20 21 // Update is called once per frame 22 void Update() 23 { 24 /* 25 プッシャーが反復運動するよう、フレーム毎に位置を更新している。 26 ここでは、z軸方向に反復運動するようにしている。 27 反復運動の移動モデルはsin関数である。 28 */ 29 newPosition = new Vector3(initPosition.x, 30 initPosition.y, 31 initPosition.z * 1.5 + Mathf.Sin(Time.time * 2)); 32 /* 33 Start関数内ではthis.transform.positionにてゲームオブジェクトの 34 トランスフォームコンポーネントの情報を取得していた。 35 トランスフォームコンポーネント以外のコンポーネントは 36 GetComponent()の様に取得する必要がある(Unity5から)。 37 */ 38 this.GetComponent<Rigidbody>().MovePosition(newPosition); 39 } 40}

コインを押し出すにはコインが必要なわけですが、コインをスポーンさせるオブジェクトを作ったところでなぜかこちらのPusherがエラーを起こしました。念の為コインスポナーのソースコードも載せておきます。

C#

1//SpawnerScript.cs 2using UnityEngine; 3using System.Collections; 4 5public class SpawnerScript : MonoBehaviour 6{ 7 8 float moveSpeed = 2.0f; 9 Rigidbody rb; 10 public GameObject coin; 11 public GameObject leftWall; 12 public GameObject rightWall; 13 float leftWallPositionX; 14 float rightWallPositionX; 15 16//start 17 void Start() 18 { 19 rb = this.GetComponent<Rigidbody>(); 20 leftWallPositionX = leftWall.transform.position.x; 21 rightWallPositionX = rightWall.transform.position.x; 22 scoreS = scoreText.GetComponent<ScoreScript>(); 23 } 24 25//update 26 void Update() 27 { 28 Vector3 currentPosition = this.transform.position; 29 currentPosition.x = Mathf.Clamp(currentPosition.x, 30 leftWallPositionX, 31 rightWallPositionX); 32 this.transform.position = currentPosition; 33 float x = Input.GetAxis("Horizontal"); 34 Vector3 direction = new Vector3(x, 0, 0); 35 rb.velocity = direction * moveSpeed; 36 if (Input.GetKeyDown("space")) 37 { 38 Instantiate(coin, this.transform.position, this.transform.rotation); 39 } 40 } 41}

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

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

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

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

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

guest

回答1

0

ベストアンサー

数値を直接プログラムに埋め込むときは1.5とかくとdouble型として扱われるので
1.5fのようにfをつけてfloat型として扱うようにしてください。

c#

1newPosition = new Vector3(initPosition.x, 2 initPosition.y, 3 initPosition.z * 1.5f + Mathf.Sin(Time.time * 2f));

投稿2020/05/12 03:25

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

_____________

2020/05/12 04:10

解決しました! 何も記述しないとdouble型になってしまうんですね!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問