首页 > 解决方案 > 将身体类型设置为动态时,角色没有向前移动

问题描述

目前我在使用此代码将字符移向 x 位置时遇到 1 个问题

     Vector3 temp = transform.position;
     temp.x += forwardSpeed * Time.deltaTime;
     transform.position = temp;

下面是inspector的设置

在此处输入图像描述

如果我将 body type 设置为Dynamiccharacter 可以上下移动,但如果我将 body type 设置为Kinematiccharacter 可以向前移动,但是当我点击屏幕时,角色会跳出屏幕。

下面是我的源代码,希望大家能指出我做错了什么

我的源代码

标签: unity3dgame-physics

解决方案


您应该使用Rigidbody2D.MovePosition来移动刚体。

Vector3 temp = transform.position;
temp.x += forwardSpeed * Time.deltaTime;

var rb = GetComponent<Rigidbody2D>();
rb.MovePosition(temp);

您也可以使用rb.position = tempMovePosition()提供最好的碰撞检测。


如果这也不起作用,您有碰撞器在向前方向阻挡您的刚体,阻止它朝那个方向移动。在这种情况下,请检查对象的层次结构,包括其子对象。


推荐阅读