【Godot】在 Godot 中模拟制作一个完全面向对象的类

Godot Version: 3.2.3

在 Godot 模拟制作一个完全面向对象的类

创建一个脚本
在这里插入图片描述
脚本中输入以下代码

"""=====================================================================
				Godot 制作完全面向对象的类
========================================================================
@datetime: 2020-8-27 18:41
@Godot version: 3.2.3
@author: 1693619798@qq.com
@version: 1.0
====================================================================="""

tool
extends EditorScript


#################################################
##			内置方法
#################################################
func _run() -> void:
	var vec = Math.Vec2(70, 30)
	print(vec.add(Vector2(200, 500)).limit(200))



#################################################
##			Math 类
##===============================================
##(这是一个内部类,如果想做一个全局的类,就重新做一个脚本
## 将下面内容剪切进去,再将 class Math改为 class_name Math
## 即可)
#################################################
class Math extends Reference:
	
	"""
	Vec2 类
	"""
	static func Vec2(x: float, y: float):
		return Vec2.new(x, y)
	
	class Vec2:
		var __vel: Vector2		# 私有变量
		
		# @Override
		func _init(x: float, y: float) -> void:
			__vel = Vector2(x, y)
		
		# @Override
		func _to_string() -> String:
			""" Print 时输出这个变量的内容"""
			return str(__vel)		

		func add(v: Vector2) -> Vec2:
			"""增加"""
			__vel += v
			return self
		
		func sub(v: Vector2) -> Vec2:
			"""减去"""
			__vel -= v
			return self
		
		func mult(n: float) -> Vec2:
			"""相乘"""
			__vel *= n
			return self
		
		func dev(n: float) -> Vec2:
			"""相除"""
			__vel /= n
			return self
		
		func limit(max_length: float) -> Vec2:
			"""向量的长度控制在一个范围内"""
			if __vel.length() > max_length:
				__vel = __vel.normalized() * max_length
			return self

在脚本代码界面中,按下 Ctrl + Shift + X,运行代码,或者在菜单中选择 运行 执行代码

在这里插入图片描述
查看代码的输出结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值