Unity 2D移动脚本报CS1061错误:Rigidbody2D无Velocity定义如何解决
Unity CS1061报错排查解决方案
报错原因
你遇到的CS1061是C#语法层面的报错,核心原因是C#语言严格区分大小写,Unity官方提供的Rigidbody2D类的速度属性名为小写v开头的velocity,你代码中写的大写V开头的Velocity不是Rigidbody2D的官方API,所以编译器找不到对应定义。
另外你代码中存在一个隐藏问题:Unity生命周期的帧更新方法是大写U开头的Update(),你写的小写update()不会被Unity引擎自动调用,后续会出现按键后角色无法移动的问题。
具体修改点
- 将代码中两处
rb.Velocity替换为rb.velocity - 将
private void update()修改为private void Update()
修改后的完整代码
using System.Collections.Generic; using UnityEngine; public class PlayerMovement : MonoBehaviour{ public float movementSpeed; public Rigidbody2D rb; float mx; private void Update() { mx = Input.GetAxisRaw("Horizontal"); } private void FixedUpdate() { Vector2 movement = new Vector2(mx * movementSpeed, rb.velocity.y); rb.velocity = movement; } }
额外注意事项
- 代码修改完成后,需要在Inspector面板给
rb字段赋值,将挂载了Rigidbody2D组件的玩家对象拖入对应字段,否则运行时会触发空引用报错 - 可以根据操作手感调整
movementSpeed的数值,避免移动速度过快/过慢
内容的提问来源于stack exchange,提问作者lolstamp_DEV
相关产品推荐
相关产品推荐

