unity3d - 将身体类型设置为动态时,角色没有向前移动
问题描述
目前我在使用此代码将字符移向 x 位置时遇到 1 个问题
Vector3 temp = transform.position;
temp.x += forwardSpeed * Time.deltaTime;
transform.position = temp;
下面是inspector的设置
如果我将 body type 设置为Dynamic
character 可以上下移动,但如果我将 body type 设置为Kinematic
character 可以向前移动,但是当我点击屏幕时,角色会跳出屏幕。
下面是我的源代码,希望大家能指出我做错了什么
我的源代码
解决方案
您应该使用Rigidbody2D.MovePosition来移动刚体。
Vector3 temp = transform.position;
temp.x += forwardSpeed * Time.deltaTime;
var rb = GetComponent<Rigidbody2D>();
rb.MovePosition(temp);
您也可以使用rb.position = temp
但MovePosition()
提供最好的碰撞检测。
如果这也不起作用,您有碰撞器在向前方向阻挡您的刚体,阻止它朝那个方向移动。在这种情况下,请检查对象的层次结构,包括其子对象。
推荐阅读
- android - Android Kotlin:如何从 Firebase 中删除数据
- sql - 在列值中转义redshift sql中的单引号
- c# - 有什么方法可以从视频等媒体元素中抓取帧而不会感到任何延迟?- WPF
- sql - 将 `SELECT` .. `UNION ALL` `SELECT` .. 转换成更高效的东西?
- lua - 扫描 Lua 文件中的无效函数名称(魔兽世界)
- javascript - Sequelize order by join table
- c++ - 如何计算时间复杂度?
- sql - 通过从另一个表中选择插入
- java - 如何通过正则表达式获取某些字符
- javascript - 过滤数组但将其属性保留在 javascript 中