Godot 4.0 自学研究笔记-1
黑之翅膀吧
全部回复
仅看楼主
level 9
黑翅🔯 楼主
Godot 4.0 自学笔记·修改鼠标模式(MouseMode)时:
这样写会提示让你将数字转为枚举
Input.mouse_mode = 1
这样写不会提示:
Input.set_mouse_mode(1)
·按本地空间旋转节点(rotate_object_local):
围绕轴(单位 Vector3)旋转局部变换,指定角度(弧度)。旋转轴是在物体的本地坐标系中。
rotate_object_local( Vector3(0,1,0), 0.5 )
·插值(lerp)支持三维向量,但(lerpf)不行:
·开关(bool)等同于(0 or 1),(0 or X):
true = 1 false = 0
将一个bool乘以任意数字。
true = 1 * x false = 0 * x
只会返回一个 0或x 的结果
·RigidBody3D 获取碰撞点:
激活接触监视器contact_monitor,可以使用_integrate_forces(XXX)方法名,获取碰撞状态。通过信号_on_body_shape_entered()可以获取碰撞对象信息。
_integrate_forces(碰撞信息)
获取碰撞信息并记录,通过碰撞信息访问碰撞点。
碰撞信息.get_contact_collider_position(body_shape_index)
获取接触对象的信息。
PhysicsDirectBodyState3D可以提供很多方法名来获取各种碰撞信息,包括碰撞点位置、碰撞对象的法线、撞击时的力度等....
信号的 local_shape_index 只要用就会报错误,不知道是不是BUG。
·获取变量的类型(typeof(XXX)):
typeof(变量) 返回类型
·插值(lerp())后面不能跟*delta:
会导致结果无限放大,最终超出500范围,下面是错误的:
ShiftRun = lerpf( ShiftRun, 500.0, 0.1 ) *delta*60
下面这个是
正确的
,最大值500.0,可以当做钳制clamp来用,限制上限。
ShiftRun = lerpf( ShiftRun, 500.0, 0.1*delta*60 )
·_physics_process 和 _process:
_physics_process是物理帧,属于游戏内部的帧数,会被Engine.time_scale游戏时间改变运算速度,_process不会受到时间影响,会根据电脑的帧数执行。所以_process更适合用来刷新UI菜单界面一类的需要立即显示的计算。_physics_process更适合当做玩家,物理计算,游戏中的物体移动等,可以被Engine.time_scale控制实现缓慢或加速的效果。
物理帧在任何时候都保持固定的帧数,就算在卡顿时也会使游戏变慢,缓慢地按帧率执行,而_process在游戏卡顿时会导致游戏中的计算出现误差。
·Godot4.0 File 改成 FileAccess,读取不用new():
现在判断文件是否存在可以这样写:
if FileAccess.file_exists("user://Options.cfg")
·Basis universal cannot unpack level 1:
Basis universal cannot unpack level 1.
换第一个
·Godot4.0修改窗口分辨率和属性方法变化:
DisplayServer.window_set_flag(DisplayServer.WINDOW_FLAG_BORDERLESS,true)
以前的OS,ProjectSettings 基本不适用了。
·Godot 4.0 修改部分窗口属性设置改为Window:
如:游戏窗口大小、标题、窗口最大化、窗口的位置...
get_viewport().set_content_scale_mode(Window.CONTENT_SCALE_MODE_CANVAS_ITEMS)
·Godot4.0 新版自定义信号参数传递:
$节点.value_changed.connect( self.AAA_.bind( "111", "222" ) )
信号名.connect( 函数名.bind( 传递的参数 ) )
自带的参数会放在第一位,信号新建的时候不用加,自建的参数会排到后面。
2023年07月01日 10点07分 1
1