相关文章推荐
####预制件 在Hierarchy中,选择对象 ![](https://kuangstudy.oss-cn-beijing.aliyuncs.com/bbs/2024/01/13/kuangstudyea09bf41-0327-4f40-a159-4dac6103b8ec.png) ##添加碰撞体 双击对象打开预制件模式 Inspector->Add Component->Box Collider 2D ![](https://kuangstudy.oss-cn-beijing.aliyuncs.com/bbs/2024/01/13/kuangstudy3ac5086d-5534-42d6-a774-d8ed2a61b8d2.png) ##对象旋转问题 >告知 物理系统 不要旋转游戏对象 双击对象打开预制件模式 Inspector->Add Component->Rigidbody 2D->Constraints->Freeze Rotation ##对象抖动问题 ###原因 ![](https://kuangstudy.oss-cn-beijing.aliyuncs.com/bbs/2024/01/13/kuangstudyd2c8537e-fdfd-4052-a71d-bcda424d7979.png) ###解决 修改代码->移动刚体本身而不是游戏对象变换组件,并让物理系统将游戏对象位置同步到刚**置->物理系统在对象进入箱子之前停止移动,而不必在对象已经进入箱子之后再移动它 ```c# public class RubyController : MonoBehaviour Rigidbody2D rigidbody2d; //创建一个名为 rigidbody2d的新变量,用来存储刚体并从脚本中的任何位置访问刚体。 float horizontal; float vertical; //创建两个新变量来存储输入数据(需要在FixedUpdate函数中使用,原声明变量仅在Update函数中适用) // 在第一次帧更新之前调用 Start void Start() //该函数内代码仅在游戏开始时执行一次 rigidbody2d = GetComponent(); //通过GetComponent()获得游戏对象上的Rigidbody2D组件的引用,然后将其赋值给名为"rigidbody2d"的变量。 // 每帧调用一次 Update void Update() horizontal = Input.GetAxis("Horizontal"); vertical = Input.GetAxis("Vertical"); //用于读取输入 //角色移动相关代码移至FixedUpdate函数 void FixedUpdate() Vector2 position = rigidbody2d.position; //利用刚**置,代替原 游戏对象变换组件位置transform.position position.x = position.x + 3.0f * horizontal * Time.deltaTime; position.y = position.y + 3.0f * vertical * Time.deltaTime; rigidbody2d.MovePosition(position); //使用刚**置来设置新位置 /*这行代码会将刚体移动到你想要的位置 * 但如果刚体在移动中与另一个碰撞体碰撞 * 则会中途停止刚体。 ##调整碰撞体大小 双击对象进入预制件模式 Inspector->Box Collider->Edit Collider 即可调整代表碰撞体的绿框大小 ![](https://kuangstudy.oss-cn-beijing.aliyuncs.com/bbs/2024/01/13/kuangstudy421a91ef-ec4d-42f9-8f38-bb2c1947ec0d.png) 调整到一半是因为你的角色需要能够走到箱子“后面” ##瓦片地图碰撞 Hierarchy->Tilemap->Inspector->Add Component->Tilemap Collider 2D ![](https://kuangstudy.oss-cn-beijing.aliyuncs.com/bbs/2024/01/13/kuangstudy8936e86b-4889-4764-80e3-fd5f22f440a9.png) ###按瓦片删除碰撞 在Project窗口中,选中所有不需要添加碰撞的瓦片 Inspector->Collider Type(Sprite->None) ![](https://kuangstudy.oss-cn-beijing.aliyuncs.com/bbs/2024/01/13/kuangstudydb5c2ad2-4322-42c6-b4ca-1ae78e0ac17b.png) ###优化瓦片地图碰撞体 每个瓦片都是一个单独的碰撞体→创建一个大的碰撞体 Hierarchy->Tilemap->Inspector->Add Component->Composite Collider 2D >会自动添加 Rigidbody 2D 组件,因为复合碰撞体需要 Rigidbody 2D 才能正常运行 Tilemap Collider 2D-> Used By Composite Rigidbody 2D->Body Type->Static >Static 将阻止你的世界移动
 
推荐文章