请帮忙,我正在制作一个破砖机游戏并使用桨式脚本 但它在第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;
}
}
答案 0 :(得分:3)
你的错误发生在这一行(我猜?):
float mousePosInBlocks = Input.mousePosition / Screen.width * 16;
问题确切地说,错误消息告诉您:Input.mousePosition
是Vector3
。如果将Vector3
除以某个浮点数,则结果也是Vector3
,因为这是元素划分。因为它仍然是Vector3
,您无法将其分配给float
变量。
要解决这个问题,您应该mousePosInBlocks
一个Vector3
或选择要分配的矢量组件。
答案 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