如何添加摩擦触发器
摩擦触发器(Friction Triggers) 是可以在运行时添加的框触发器,让用户在处于这些类型的触发器内时定义车辆车轮的不同摩擦力。例如,这对于动态地在地图的某些区域中制作光滑的表面可能很有用。
为了使用 PythonAPI 生成摩擦触发器,用户必须首先获取
static.trigger.friction
蓝图定义,然后为该蓝图定义设置以下必要属性:
- friction: 当车辆位于触发盒内时,触发盒的摩擦力。
- extent_x: X 坐标中边界框的范围(以厘米为单位)。
- extent_y: Y 坐标中边界框的范围(以厘米为单位)。
- extent_z: Z 坐标中边界框的范围(以厘米为单位)。
完成此操作后,定义一个变换来指定摩擦触发器的位置和旋转并生成它。
例子
import carla
def main():
# 连接到客户端
client = carla.Client('127.0.0.1', 2000)
client.set_timeout(2.0)
# 获取事件和参与者
world = client.get_world()
actors = world.get_actors()
# Find Trigger Friction Blueprint
friction_bp = world.get_blueprint_library().find('static.trigger.friction')
extent = carla.Location(700.0, 700.0, 700.0)
friction_bp.set_attribute('friction', str(0.0))
friction_bp.set_attribute('extent_x', str(extent.x))
friction_bp.set_attribute('extent_y', str(extent.y))
friction_bp.set_attribute('extent_z', str(extent.z))
# Spawn Trigger Friction
transform = carla.Transform()
transform.location = carla.Location(100.0, 0.0, 0.0)
world.spawn_actor(friction_bp, transform)
# Optional for visualizing trigger
world.debug.draw_box(box=carla.BoundingBox(transform.location, extent * 1e-2), rotation=transform.rotation, life_time=100, thickness=0.5, color=carla.Color(r=255,g=0,b=0))
if __name__ == '__main__':
main()