在godot中与特定运动体3d的特定对撞机碰撞后如何反映速度?

问题描述

因此,基本上我有一个运动主体3d,它随操纵杆一起移动(在操纵杆指向的相反方向上,就像触发器一样)。我想要的是使运动体在撞击壁(网格图,在“壁”组中)后反映运动的方向,就像反射镜一样,当入射光线与反射镜碰撞并被反射时反射。镜,其入射角等于反射角。我使用面积节点来知道碰撞体是否在“墙”组中。我设法以某种方式获得了速度的反射,但随后却疯狂地加速到反射的方向。这是我的运动机构的代码:

extends KinematicBody

var acceleration = 10
var topspeed = 11
onready var joystick = get_parent().get_node("Joystick/Joystick_button")
var vel = Vector3()
var speed = 10
var target_dir = Vector2(0,0)
var a 



func _ready():
    pass 

func _physics_process(delta):
    #var target_dir = Vector2(0,0)
    target_dir = -joystick.get_value()
    if joystick.ongoing_drag != -1:
        a = -joystick.get_value()
    if joystick.ongoing_drag == -1 and joystick.i != 0:
        target_dir = a


    vel.x = lerp(vel.x,target_dir.x * speed,acceleration * delta)
    vel.z = lerp(vel.z,target_dir.y * speed,acceleration * delta)




    vel = move_and_slide(vel,Vector3(0,1,0))





func _on_Area_body_entered(body):

    if body.is_in_group("walls"):

        acceleration *= -1

编辑:我发现Vector3.bounce()方法的工作方式相同,但由于无法从墙壁弹起而无法实现,就像它应该像在墙壁之间曲折一样或撞球台边缘碰到斯诺克撞球者后,球弹向了另一个方向。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)