如何解决在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 举报,一经查实,本站将立刻删除。