2016-08-22 92 views
0

私は現在、レンガブレーカーゲームで作業しており、パドルスクリプト で作業していますが、 MonoBehaviour {unity 5.3.0f4 error CS0029;暗黙的にタイプ 'UnityEngine.Vector3'を 'float'に変換することはできません

Vector3 mousePosInBlocks; 
    Vector3 paddlePos; 

// Use this for initialization 
void Start() { 

} 

// Update is called once per frame 
void Update() { 

    paddlePos = new Vector3 (0.5f, this.transform.position.y, 0f); 

    mousePosInBlocks = Input.mousePosition/Screen.width * 16; 

    paddlePos.x = Mathf.Clamp(mousePosInBlocks.x, 0.5f, 15.5f); 

    this.transform.position = paddlePos; 
} 

:私は、スクリプトが組み合わされ、両方が

パブリッククラスパドルを答えるここ

using UnityEngine; 
using System.Collections; 

public class Paddle : MonoBehaviour { 


    // Use this for initialization 
    void Start() { 

    } 

    // Update is called once per frame 
    void Update() { 

     Vector3 paddlePos = new Vector3 (0.5f, this.transform.position.y, 0f); 

     float mousePosInBlocks = Input.mousePosition/Screen.width * 16; 

     paddlePos.x = Mathf.Clamp(mousePosInBlocks, 0.5f, 15.5f); 

     this.transform.position = paddlePos; 
    } 
} 

をするVector3するフロートを変更する方法がわかりません}

+0

Input.mousePositionを交換したい場合には、最終的に動作し、あなたの両方の答えに感謝します –

答えて

3

あなたのエラーは、この行(?私は推測)で発生します。Input.mousePositionVector3です:

float mousePosInBlocks = Input.mousePosition/Screen.width * 16; 

問題は、エラーメッセージがわかります正確に、何です。 Vector3をある浮動小数点で除算すると、結果はVector3であり、これは要素ごとの除算であるためです。まだVector3なので、変数floatに割り当てることはできません。

これを解決するには、mousePosInBlocksVector3にするか、または割り当てるベクトルのコンポーネントを選択する必要があります。

参考:Input.mousePosition

1

Mathf.Clampがfloat、ないのVector3を必要とします。

変更この:

paddlePos.x = Mathf.Clamp(mousePosInBlocks, 0.5f, 15.5f); 

へ:yの

paddlePos.x = Mathf.Clamp(mousePosInBlocks.x, 0.5f, 15.5f); 

同じこと、必要な場合。

また、mousePosInBlocksをVector3にする必要があります。

だけ、Xを処理floatとしてmousePosInBlocksを保つが、Input.mousePosition.x

関連する問題