这几天,我试图创建一个统一的2D角色控制器(使用物理)。我对物理引擎刚起步,因此很难获得想要的控制感。如果有人可以为我发现的问题提供解决方案,我将非常高兴:
这是我现在的FixedUpdate:
public void FixedUpdate()
{
Vector3 v=new Vector3(0,-10000*Time.fixedDeltaTime,0);
_body.AddForce(v);
v.y=0;
if(state(MovementState.Left))
{
v.x=-_walkSpeed*Time.fixedDeltaTime+v.x;
if(Mathf.Abs(v.x)>_maxWalkSpeed) v.x=-_maxWalkSpeed;
}
else if(state(MovementState.Right))
{
v.x= _walkSpeed*Time.fixedDeltaTime+v.x;
if(Mathf.Abs(v.x)>_maxWalkSpeed) v.x=_maxWalkSpeed;
}
_body.velocity=v;
Debug.Log("Velocity: "+_body.velocity);
}
我在这里尝试通过向左和向右施加重力和线性力来移动刚体。我设置了一种物理材料,该材料在运动时不会弹跳,摩擦力为0,在静止时摩擦力为1。主要问题是我的撞机具有坡度,并且速度从上升(慢),下坡(更快)和在直线对撞机(正常)上行走而变化。如何解决?如您所见,我始终对x轴应用相同的速度。
对于玩家来说,我在脚位置设置了一个球体,这是我要施加力的刚体。
欢迎其他任何可以使我的生活更轻松的提示:)。
PD在回家时,我注意到我可以解决这个问题,方法是平行于玩家正在行走的表面施加恒定的力,但是不知道这是否是最佳方法。