unity 5.3.0f4错误CS0029;不能隐式转换类型'UnityEngine.Vector3'为'float'

时间:2016-08-22 08:17:49

标签: c# unity3d

请帮忙,我正在制作一个破砖机游戏并使用桨式脚本 但它在第17行显示错误,我不知道如何将float更改为vector3

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;
    }
}

这里的脚本结合了两个答案

公共课Paddle:MonoBehaviour {

    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;
}

}

2 个答案:

答案 0 :(得分:3)

你的错误发生在这一行(我猜?):

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

问题确切地说,错误消息告诉您:Input.mousePositionVector3。如果将Vector3除以某个浮点数,则结果也是Vector3,因为这是元素划分。因为它仍然是Vector3,您无法将其分配给float变量。

要解决这个问题,您应该mousePosInBlocks一个Vector3或选择要分配的矢量组件。

参考:Input.mousePosition

答案 1 :(得分:1)

Mathf.Clamp需要一个浮点数,而不是一个Vector3。

改变这个:

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

致:

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

如果需要,你也可以这样做。

您还需要将mousePosInBlocks设为Vector3。

如果您只想处理x,请将mousePosInBlocks保留为float,但将Input.mousePosition替换为Input.mousePosition.x