やりたいこと
- 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}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/12 04:10