制作3D平台游戏旋转可收集硬币时遇CS1503错误求助
问题解决:Unity旋转硬币脚本类型转换错误
错误原因
错误CS1503: Argument 1: cannot convert from 'float' to 'UnityEngine.Vector3'是因为transform.Rotate()方法要求传入Vector3类型的欧拉角,或三个分别对应X、Y、Z轴的float值,你当前传入的单个float值类型不匹配。
修正后的代码
因为你需要硬币绕Y轴旋转,只需将旋转值限定在Y轴维度即可,两种写法任选其一:
写法一(Vector3参数)
public class Rotate : MonoBehaviour { [SerializeField] float speedY; void Update() { // 指定绕Y轴旋转,X、Z轴旋转量为0 transform.Rotate(new Vector3(0, 360 * speedY * Time.deltaTime, 0)); } }
写法二(多float参数)
public class Rotate : MonoBehaviour { [SerializeField] float speedY; void Update() { // 依次传入X、Y、Z轴的旋转角度 transform.Rotate(0, 360 * speedY * Time.deltaTime, 0); } }
补充说明
[SerializeField]无需改成public,它的作用就是让私有变量在Inspector面板中可见,完全满足你在面板设置速度的需求。360 * speedY * Time.deltaTime是为了将速度转换为每秒旋转的角度,保证旋转速度不受帧率波动影响。
内容的提问来源于stack exchange,提问作者coggy
相关产品推荐
相关产品推荐

