Unity报错:无法从ForceMode2D转换为ForceMode,角色跳跃失效怎么解决
Unity无法将ForceMode2D转换为ForceMode报错解决
报错原因
- 代码中声明的是3D物理体系的
Rigidbody组件,其AddForce方法仅支持传入UnityEngine.ForceMode枚举作为力模式参数 - 代码中传入的
ForceMode2D.Impulse属于2D物理体系的枚举类型,和3DRigidbody的参数要求不匹配,因此触发类型转换报错
解决方案
方案1:开发2D游戏(横版跳跃多为2D项目)
按以下步骤修改即可:
- 将刚体声明从
private Rigidbody mybody;修改为private Rigidbody2D mybody; Awake方法中获取组件的代码修改为mybody = GetComponent<Rigidbody2D>();- 给角色游戏对象挂载
Rigidbody2D组件,不要挂载3D版本的Rigidbody组件
修改后对应的跳跃代码示例:
void PlayerJump() { if (Input.GetButtonDown("Jump")) { mybody.AddForce(new Vector2(0f, jumpforce), ForceMode2D.Impulse); } }
方案2:开发3D游戏
直接修改AddForce的力模式参数即可,将2D枚举替换为3D对应的枚举值:
void PlayerJump() { if (Input.GetButtonDown("Jump")) { mybody.AddForce(new Vector2(0f, jumpforce), ForceMode.Impulse); } }
内容的提问来源于stack exchange,提问作者BT19EEE018 Harsh Chauhan
相关产品推荐
相关产品推荐

