Unity 2D报错:Cannot implicitly convert type 'Rigidbody2D' to 'Rigidbody'求解决
错误原因与修复方案
错误根源
你声明的rb变量类型是Rigidbody(3D刚体组件),但在Start()方法中获取的是Rigidbody2D(2D刚体组件)——这是Unity中两个完全独立的组件类型,无法直接隐式转换,因此触发该错误。
修复步骤
- 将变量声明从
Rigidbody rb;修改为Rigidbody2D rb;,确保变量类型与获取的组件类型完全匹配。 - 确认你的Player游戏对象上挂载的是
Rigidbody2D组件(而非3D的Rigidbody),组件类型不匹配也会导致后续运行异常。
修改后的完整代码
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerCtrl : MonoBehaviour { public float movSpeed; float speedX, speedY; Rigidbody2D rb; // 修正类型为Rigidbody2D void Start() { rb = GetComponent<Rigidbody2D>(); } void Update() { speedX = Input.GetAxisRaw("Horizontal") * movSpeed; speedY = Input.GetAxisRaw("Vertical") * movSpeed; rb.velocity = new Vector2(speedX, speedY); } }
内容的提问来源于stack exchange,提问作者Leo Jay
相关产品推荐
相关产品推荐

