ユーザー様が送ってくださった要求は、球体AをX軸方向に移動させるときに、球体BをY軸方向に移動させるものだと思います。しかし、この要求では、球体AとBの移動速度や移動範囲が明確ではありません。また、Blenderのバージョンは3.4.1ではなく3.0.0だと思います。
Blenderでオブジェクトを特定の軸方向に移動させるには,`obj.location`や`obj.matrix_world.translation`を使うことができます¹。また,オブジェクトの位置をキーフレームとして登録することで,アニメーションを作成することができます²。
例えば,以下のコードでは,球体AをX軸方向に-30から30まで移動させています。そして,球体Aが原点(0, 0, 0)を通過したら,球体BをY軸方向に0から-30まで移動させています。
```python
import bpy
# 球体Aを作成する
bpy.ops.mesh.primitive_uv_sphere_add(radius=1, enter_editmode=False, location=(-30, 0, 0))
objA = bpy.context.active_object
# 球体Aにマテリアルを設定する
matA = bpy.data.materials.new(name="SphereMatA")
matA.use_nodes = True
nodes = matA.node_tree.nodes
principled_bsdf = nodes.get("Principled BSDF")
principled_bsdf.inputs[0].default_value = (1, 0, 0, 1)
principled_bsdf.inputs[7].default_value = 0.5
objA.data.materials.append(matA)
# 球体Bを作成する
bpy.ops.mesh.primitive_uv_sphere_add(radius=1, enter_editmode=False, location=(0, 0, 0))
objB = bpy.context.active_object
# 球体Bにマテリアルを設定する
matB = bpy.data.materials.new(name="SphereMatB")
matB.use_nodes = True
nodes = matB.node_tree.nodes
principled_bsdf = nodes.get("Principled BSDF")
principled_bsdf.inputs[0].default_value = (0, 1, 1, 1)
principled_bsdf.inputs[7].default_value = 0.5
objB.data.materials.append(matB)
# 球体AとBの位置変数を初期化する
pos_A_x = -30 # 球体AのX座標(-30から30まで)
pos_B_y = 0 # 球体BのY座標(-30から0まで)
# 移動速度変数(フレームごとに増減される値)を設定する
speed_A_x = +2 # 球体AのX軸方向の速度(+2メートル/フレーム)
speed_B_y = -2 # 球体BのY軸方向の速度(-2メートル/フレーム)
# アニメーション用のフレーム数変数(40秒間)を設定する
frames = int(40 * bpy.context.scene.render.fps)
# フレームごとにオブジェクトの位置を更新してキーフレーム登録するループ処理
for i in range(frames):
# 現在のフレーム番号を設定する
bpy.context.scene.frame_set(i)
# 球体Aが原点(0, 0 , 0)より左側か右側か
bbb