WheelJoint2d的motor.motorspeed赋值的方法

对于 wheeljoint2d的motor.motorspeed赋值的方法

就像transform.position.x是不能直接赋值的一样,这个也不能,那么想想transform.position是如何赋值的呢?

我是这么做的
transform.position = new Vector3(x,y,z);
这当然是可以,但是对于我今天想说的motorspeed究竟是如何赋值的呢?

如果直接输入
WheelJoint2D.motor.motorspeed = 5;这样的代码,会直接报错,说无法修改这个的返回值?,因为他不是变量.
实际上他的情况和上面那个一样
解决方法就是找到一个匹配的一个变量

这个就是JointMotor2D这个类,也就是2d的马达,这个其实就是这个轮子的马达的类是一个类。

那么就可以对他进行赋值了

    JointMotor2D motoa = new JointMotor2D();
    motoa.motorSpeed = speed; //这里的speed可以换成具体数值或者别的float类型的变量即可

    //然后在对motor这个类整体赋值
    moto1.motor = motoa;//这里的moto1是我的一个WheelJoint2D类的对象。

我在解决这个问题的时候发现百度出来的好像很多都是WheelJoint2D.motor就可以直接改了,我看的那个教程也是,也不知道是不是因为我的unity版本太高所以不行。2018.4的好像是。感谢1whf。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是BipedalWalker-v2环境中的`step`函数,用于执行一个动作并更新环境状态。让我们逐行地分析这段代码: ```python def step(self, action): ``` 这是一个类方法,接受一个参数`action`,代表智能体执行的动作。 ```python control_speed = False ``` 这个变量用于控制智能体是否应该控制步速。如果`control_speed`为`True`,则智能体将尝试控制步速;否则,它将尝试控制步态。 ```python if control_speed: self.joints[0].motorSpeed = float(SPEED_HIP * np.clip(action[0], -1, 1)) self.joints[1].motorSpeed = float(SPEED_KNEE * np.clip(action[1], -1, 1)) self.joints[2].motorSpeed = float(SPEED_HIP * np.clip(action[2], -1, 1)) self.joints[3].motorSpeed = float(SPEED_KNEE * np.clip(action[3], -1, 1)) else: self.joints[0].motorSpeed = float(SPEED_HIP * np.sign(action[0])) self.joints[0].maxMotorTorque = float(MOTORS_TORQUE * np.clip(np.abs(action[0]), 0, 1)) self.joints[1].motorSpeed = float(SPEED_KNEE * np.sign(action[1])) self.joints[1].maxMotorTorque = float(MOTORS_TORQUE * np.clip(np.abs(action[1]), 0, 1)) self.joints[2].motorSpeed = float(SPEED_HIP * np.sign(action[2])) self.joints[2].maxMotorTorque = float(MOTORS_TORQUE * np.clip(np.abs(action[2]), 0, 1)) self.joints[3].motorSpeed = float(SPEED_KNEE * np.sign(action[3])) self.joints[3].maxMotorTorque = float(MOTORS_TORQUE * np.clip(np.abs(action[3]), 0, 1)) ``` 这个if-else语句块用于控制智能体的动作执行。如果`control_speed`为`True`,智能体将尝试控制步速,否则它将尝试控制步态。变量`SPEED_HIP`和`SPEED_KNEE`是控制关节运动的常数,`MOTORS_TORQUE`是控制关节扭矩的常数。 ```python self.world.Step(1.0 / FPS, 6 * 30, 2 * 30) ``` 这行代码是用来更新环境状态的。`world`是Box2D物理引擎的世界对象,`Step`方法用于更新世界状态。`1.0/FPS`是世界的时间步长,`6 * 30`和`2 * 30`是Box2D物理引擎中的两个常数,用于控制物理引擎的性能和精度。 总的来说,这个`step`函数是用于控制BipedalWalker-v2环境中的双腿走路的逻辑,包括控制步态和步速。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值