请帮帮忙,我目前正在开发一个破砖游戏,正在编写划桨脚本,但它在第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;
}
}
下面是结合了两个答案的脚本
公共类面板: 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;
}
}
发布于 2016-08-22 16:22:59
你的错误出现在这一行(我猜?):
float mousePosInBlocks = Input.mousePosition / Screen.width * 16;
问题恰恰是错误消息告诉您的:Input.mousePosition
是一个Vector3
。如果将Vector3
除以某个浮点数,结果也是一个Vector3
,因为这是一个元素除法。因为它仍然是一个Vector3
,所以不能将它赋给float
变量。
若要解决此问题,应将mousePosInBlocks
设置为Vector3
或选择要指定的向量组件。
发布于 2016-08-22 18:30:49
Mathf.Clamp需要一个浮点数,而不是Vector3。
更改此设置:
paddlePos.x = Mathf.Clamp(mousePosInBlocks, 0.5f, 15.5f);
至:
paddlePos.x = Mathf.Clamp(mousePosInBlocks.x, 0.5f, 15.5f);
如果需要,对y也是如此。
您还需要将mousePosInBlocks设置为Vector3。
如果只想处理x,则将mousePosInBlocks保留为浮点型,但将Input.mousePosition
替换为Input.mousePosition.x
https://stackoverflow.com/questions/39074440
复制相似问题