box2D斜面摩擦力和sprite朝向的兼顾取舍
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了box2D斜面摩擦力和sprite朝向的兼顾取舍,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1393字,纯文字阅读大概需要2分钟。
内容图文
![box2D斜面摩擦力和sprite朝向的兼顾取舍](/upload/InfoBanner/zyjiaocheng/534/b1f29b54f5f145589b6db2f4a282d15b.jpg)
问题起源: 一般游戏的主角player的b2Body的fixedRotation属性都设置为true,即不能旋转,这样可以保证player在受到物理冲力的时候不会扭来扭去,比如超级玛丽他的人物模型始终是直立的。当player遇到斜面物体时,它和斜面之间只有一个接触点,这样就没有摩
问题起源:
一般游戏的主角player的b2Body的fixedRotation属性都设置为true,即不能旋转,这样可以保证player在受到物理冲力的时候不会扭来扭去,比如超级玛丽他的人物模型始终是直立的。当player遇到斜面物体时,它和斜面之间只有一个接触点,这样就没有摩擦力,这会造成player运动状态的失真。
- 如果将player的fixedRotation设置为false,即可以旋转,这时摩擦力正常,但player的sprite图片也会跟着旋转,有时却希望sprite仍保持直立。
解决方法:
一、 始终fixedRotation=true,
当player在斜面上时,将player的body构造成底部为斜边的polygon,并且倾斜角度和斜面角度相同。在平面上时,body底部改为平面。
缺点:1. 不能适应各种角度的斜面。
2. 由于Box2D中b2Fixture不能变形,b2Body对象想要改变形状,其中包含的b2Fixture对象要反复创建,销毁,工作繁复,效率不高。
二、当player在平面上时,fixedRotation=true;
当player在斜面上时,fixedRotation=false;然后player的sprite图片根据斜面的角度转动相应的角度。
- 具体做法大概是:建一个斜面类继承自CCSprite,类成员包括斜面的b2Body,斜面的角度degree,类方法包括斜面的创建方法createInclinePlane(),在这个方法中得到斜面的degree。
- 在需要用到degree的时候,用degree的getor()可以获取。
内容总结
以上是互联网集市为您收集整理的box2D斜面摩擦力和sprite朝向的兼顾取舍全部内容,希望文章能够帮你解决box2D斜面摩擦力和sprite朝向的兼顾取舍所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。