黑翅🔯 黑之翅膀
Minecraft观察者
关注数: 194 粉丝数: 1,828 发帖数: 16,636 关注贴吧数: 38
如何做出有创意的独立游戏?我建议你试试 1. 不要一开始就去想游戏类型 自古以来,游戏分类是先有游戏,游戏多了才出现分类。就像鸡和蛋的关系,先有鸡还是先有蛋呢?当然是先有鸡后有蛋啦,不然哪来的鸡蛋这个称呼。游戏分类也是如此,先有游戏,才有分类。分类是为了让玩家更容易更直接地去找到属于自己喜欢的游戏类型,但作为一个创作型游戏制作人,这不是你应该想的部分,因为好的创意是不分类型的,如果一开始就去想游戏类型,那么第一步你的游戏过程就已经被限制了,你只能做这个类型,你就没有突破这个分类的可能性了,你会一直按照这个分类的标准去做游戏,从第一步就把自己50%的创意可能给抹掉了,游戏创意有极限吗?有!自我设限,便是极限。 2. 不要盲目的从其他游戏中寻找灵感 自始至终,灵感的来源并不是参考,而是我们自身大脑的幻想与结合的能力,你的幻想能力够强大,就能想出别人想不到的东西,你的结合能力越强大,你所见到的东西都将为你所用。灵感来源于哪里?灵感来源于你所见到的一切,听到的一切,闻到的一切,其实你的生活中就有无限的灵感在四处飘扬,可惜你没有发现它们的眼睛,当一切归于习惯归于平坦归于自然之后,你就彻底迷失了曾经那双雪亮的眼,上哪去找灵感?百度告诉你别人告诉你朋友告诉你,如果你还在去寻找如何灵感创新游戏这个答案的话,我建议你先从自己的认知开始,先把你自己开放了再去找,因为没有灵感的病根在于你自我设限,就像第一条一样,一开始就想好了,还能有什么发挥空间? 在这里我提醒一下,就那么一下了,希望对你们有帮助。平时你生活中你害怕浪费的、不敢去做的、不能去做的、甚至不是你应该做的,都是属于你自身自带的灵感来源,别人是没有的。你有的,别人没有,你没有的,别人也没有。比如“你懂的”。这就是你的特色,用逆向思维去思考,寻找与众不同,便是属于你自己的财富,你自己的创新。 至于在别人的游戏中获取灵感嘛...那是别人幻想出来的,就算你模仿出来也只是走了相同的路线,你还是不会有创新的可能,创意来源,先把你自己解锁了。 3. 不要害怕结果带来的问题 做游戏,总担心自己的创意无法实现,担心做游戏收入的问题,担心游戏受众问题,担心游戏做出来没人玩。我劝你把这些想法抛于脑后,也不要从其他游戏制作人中吸取这些负面认知,因为这条路你是必定要自己经历的,就算你知道结果,你知道会发生那样的事,你也无法避免。如果你不去直面这些问题带来的后果,那你只会在游戏制作上止步不前或者中途逃离,你担心这担心那,想做创新又想一直去逃避这些问题,那我敢肯定你的游戏就算在你认知里充满创新,也会被你的顾虑扣掉90%,你担心跟程序无法磨合,你担心画风比不过别人,你担心音乐不够动听。 我在这劝大家一句,不要拿别人几十年的经验来给自己当做一个标准,你的游戏制作经验才刚起步,你还在想游戏类型的时候,别人已经是个大爷了,你以大爷为一个标准吗?不可能。你能看到的游戏,就像现在看网红一样,一个字“美”,似乎这种美已经成为一个标准,却不知道这种美其实接近天花板。所以你要是担心自己做不出像别人一样好玩的游戏,我只能明确地告诉你,你现在只是个小天才,以后才会成为大人才,要一步步来喔! 4. 不要把目标放在已有的游戏上 我玩过的所有游戏,印象最深刻的都是日本游戏,FC时代,很多人说,现在的游戏玩起来没意思,是因为我们小时候玩游戏是跟小伙伴一起玩的,自己玩没有那种感觉。在我看来,这只是个小因素,我们觉得游戏不好玩,并不只是没有朋友一起,而是除了换个皮囊画风升级之外真的没有什么可玩性,我们以前是怎样的?每一个游戏都能感觉到新颖的感觉,在游戏中发现一个新的东西会特别开心,很乐于跟人分享。但如今2020年了,游戏内核没什么太大变化,还是那些换皮模式,还是那些模仿的作品,没有一样属于自己的东西,甚至你都不知道上哪去找到一些觉得有创意的游戏,就连搜索里输入创意两个字,给出来的结果也是毫无创意的视频标上创意二字,如果玩法上你有我有他也有,那还算什么创意?你喝水,我也喝水,我的水杯不一样那不叫创意,我喝水,你吐水的话我反而觉得你这个人很有意思,因为你做了别人几乎想不到的事情,我想交你这个沙雕朋友。 5. 不要老想心理战术 运用过多的心理战术只会让你的游戏变得越来越复杂越来越扭曲,游戏的纯粹感被破坏了,玩家也迟早会在你的游戏中清醒,知道你的套路,游戏是死的,你的套路放游戏里被揭穿了,反而成了你口碑上的一道污点,立白都救不了你。心理战术对游戏玩家真的很不利,当心理学被利用来对付玩家,这是一件很可怕的事情,就像在帮人洗脑,为了让玩家获得成就感,为了让玩家玩的更久,为了让玩家不那么容易通关,为了让玩家宣传自己的游戏,往自己的游戏里放心理添加剂,让玩家出现错误的认知认为自己很厉害,让玩家为了得到某个东西而肝上几天几夜,让玩家把时间消耗在你的游戏上只为了通关。这些在我看来是很可怕的一件事,为什么我们要想这些游戏以外的事情?为什么我们要考虑这么多因素往游戏里塞? 如果你看过其他游戏制作的视频推广,有让你去想这些应付玩家的动向,赶紧逃吧! 你很快就会变得不纯净了,你做游戏的初心会不知不觉得在转变,你的认知也会开始转变。 这个被我称之为杂质,你的思维杂质多了,做一件事就会变的困难了。做人如此,做游戏也如此。 游戏没有其他人说的所谓的规则,也没有所谓的标准。如果你是给自己做游戏,你就把那些劝你设计关卡、游戏玩法、故事剧情、操作流程什么话当作一个屁蹦出来不一会就散开飞向广阔的天空,飘向白云,在空中做了一次化学物质转换。然后继续做你的游戏,如果你游戏里有剧情,你就写你的剧情,如果你需要别人的帮助,你就可以问,你只拿你想要的那一部分,对方说完你问题解决了,就打开静音吧,强塞给你的那些话就不要听了。 最后,祝愿大家在未来游戏制作的道路上,又比昨天前进了一步,你要坚信你的目标,你所积累的经验,你所面临的困难,都一一击破,而每一道被你创造出来的新道路,都是你无法被取代的财富,只有你做到别人做不到想不到的新玩法,那将会是只属于你的专利财富,是刻在你以后成长路线上的一道道闪光点,某一天我们会看到这条路,这条通往你游戏的路,门牌写着你的大名,游戏创意,此路由你开,你的名字叫做:
【Godot】透明玻璃方块、半透明玻璃方块、透明物体带阴影效果 Godot吧主大佬人类的大敌的视频教学里有说过,透明的东西会没有阴影。 一开始我用了一种方法,就是网格实力节点里再套一个子节点,然后隐藏自己,只显示阴影。不过这一种方法等于多了一个节点,这要是放在复杂的模型里,这个方法感觉有点吃性能。 然后我就想到了另一个,在材质里套材质。 没有贴图的情况下感觉简单些,原理其实就是这样: 一个材质里可以叠加另一个材质,其中一个材质是透明的,另一个材质是不透明的。 透明的材质是看得见的,不透明的材质给隐藏了。拼起来就跟上面的做两个方块原理差不多。因为顺序优先级和透明里的一个剔除属性,会把背后的那层隐藏掉,所以啥也不用干,那个带阴影的材质就看不见了 只留下一个阴影。 就变成了这样子了: 因为我这没有勾那个取消光照的,我的环境光还能把玻璃得发亮。。这个按照自己喜欢的调整就好了然后是带半透明的玻璃材质贴图: 原理也是前后顺序,不过这次要把后面的也要看见,而我们看见的就是方块的内部。 之前也想过这个问题,刚好godot群里有位大佬也为这个事困扰,然后我就想试试。 既然贴图自己就有透明度,不透明度,半透明度混合,那我们就不能直接用Albedo里的颜色透明度来搞了,不透明度拉满,让贴图来决定。 如图所见,方块1是看到前面3个面的,但它后面三个面看不见了。所以我们的第二个材质给补上背后三个面。组合起来就是一个完整的方块。加了贴图之后,我们勾上flags标签里的,透明。这时我们只得到了一个透明的而且只能看到三个面的透明体。只看到外表了,看不到玻璃方块的里面,所以我们在next_pass里加下一个材质, 针对背面来给它再整一个只能看到里面的半透明体。拼在一起就行了。 一样的贴图,一样的属性,不一样的剔除模式,改成Front,只保留方块的背面。就像这样的:然后把它们合起来就完事了: 加背面之前:加背面之后:depth draw mode(深度渲染模式) 改成 opaque pre-pass(不透明干涉)阴影就有了这里修改的地方是方块前三个面的材质属性(改背面没阴影)
【Godot】一个炸弹爆炸冲力物理模拟 这几天我跟一个大佬在合作,然后我们俩都不太会数学哈哈。 最近想搞个物理爆炸的效果,把周围的东西炸飞,于是做出了这个效果。我这里的计算原理可能跟其他游戏不太一样,不过效果感觉还可以,应该是最简单的实现方式了。 原理是: 我们获取炸弹的坐标,再获取被炸物体的坐标。 物体的坐标 - 炸弹的坐标 = 两者之间的距离这样计算下来,只要炸弹的位置在左边,炸弹的坐标就肯定小于物体的坐标,这样减出来的结果就一定是整数,所以它会往右飞! 我们直接单独拿一个X轴来算,假如炸弹现在的X坐标=0,而物体在坐标X=3, 这时用 物体x - 炸弹x 得出 物体和炸弹之间的距离。 得到距离了就可以给他做衰减计算了,我想让物体里炸弹越近,它受到的爆炸力越大。 我们假设炸弹爆炸范围最大=10。用 爆炸范围最大距离 - 物体和炸弹的距离 = 剩下的爆炸冲力这时候数值就反过来了,物体离炸弹越近,受到的冲力就越大! 这时候还有点小问题,假如炸弹的坐标是负数呢? 10 - -1 = 11,它的距离是11,变成正数,方向就错了,所以我们还得给它个判定。 如果 距离 < 0:我们用 -冲击力 - 距离。 -10 减 -1=? -11,负数往左飞了。 就是物体和炸弹的距离是负数,我们就用 “负爆炸距离” 减 “距离” 如果物体和炸弹的距离是正数,我们就用 “正爆炸距离” 减 “距离”。 这个爆炸距离也可以当做爆炸强度来使用,因为判断被炸到的物体是哪些要用到范围判断。 判断方式有很多方法,我这里用了节点 Area 。 下面是详细: #新建一个变量,名字自己取把: var 爆炸力 = 30 给炸弹弄一个Area节点,加上碰撞箱用来当做炸弹能炸到的范围。然后用节点信号来获取接触的物体发送到炸弹身上:炸弹身上的脚本,检测所有进入范围的刚体: 给进入范围的所有物体加入数组:Bodys ← 自己起的数组名 超出范围的物体就给它挪出数组,让他不被计算到。那么进入Bodys数组里的物体就可以用 上面的计算来给物体施加一个方向力了。 将炸弹爆炸之后计算出来的爆炸结果给物体加上: 利用这个方法↓: 给物体施加一个方向力(适用于刚体类节点) apply_central_impulse() #数组名.apply_central_impulse(算出的方向力结果)↓ Bodys.apply_central_impulse(Distance) 给数组里的物体施加一个方向力,这个方向力的力度就是:爆炸力 -(物体坐标 - 炸弹坐标) 最后的最后: 用Area判断范围的话,就算隔着墙壁也会被炸到,可以选择用射线来判断最近物体, 但是纯用射线的话计算出整个球体的全方向发射位置又会太吃性能,于是就想到了一个办法。 我们用范围先获取所有可以被炸到物体,然后再单独向这些物体发射射线(因为射线只能射到最近的物体) ,然后排除掉没有被射线射到的物体,剩下的就是可以被炸飞的物体了。 小小分享,非专业~
【萌新贴·3D】一个炸弹爆炸冲力物理模拟 这几天我跟一个大佬在合作,然后我们俩都不太会数学哈哈。 最近想搞个物理爆炸的效果,把周围的东西炸飞,于是做出了这个效果。我这里的计算原理可能跟其他游戏不太一样,不过效果感觉还可以,应该是最简单的实现方式了。 原理是: 我们获取炸弹的坐标,再获取被炸物体的坐标。 物体的坐标 - 炸弹的坐标 = 两者之间的距离这样计算下来,只要炸弹的位置在左边,炸弹的坐标就肯定小于物体的坐标,这样减出来的结果就一定是整数,所以它会往右飞! 我们直接单独拿一个X轴来算,假如炸弹现在的X坐标=0,而物体在坐标X=3, 这时用 物体x - 炸弹x 得出 物体和炸弹之间的距离。 得到距离了就可以给他做衰减计算了,我想让物体里炸弹越近,它受到的爆炸力越大。 我们假设炸弹爆炸范围最大=10。用 爆炸范围最大距离 - 物体和炸弹的距离 = 剩下的爆炸冲力这时候数值就反过来了,物体离炸弹越近,受到的冲力就越大! 这时候还有点小问题,假如炸弹的坐标是负数呢? 10 - -1 = 11,它的距离是11,变成正数,方向就错了,所以我们还得给它个判定。 如果 距离 < 0:我们用 -冲击力 - 距离。 -10 减 -1=? -11,负数往左飞了。 就是物体和炸弹的距离是负数,我们就用 “负爆炸距离” 减 “距离” 如果物体和炸弹的距离是正数,我们就用 “正爆炸距离” 减 “距离”。 这个爆炸距离也可以当做爆炸强度来使用,因为判断被炸到的物体是哪些要用到范围判断。 判断方式有很多方法,我这里用了节点 Area 。 下面是详细: #新建一个变量,名字自己取把: var 爆炸力 = 30 给炸弹弄一个Area节点,加上碰撞箱用来当做炸弹能炸到的范围。然后用节点信号来获取接触的物体发送到炸弹身上:炸弹身上的脚本,检测所有进入范围的刚体: 给进入范围的所有物体加入数组:Bodys ← 自己起的数组名 超出范围的物体就给它挪出数组,让他不被计算到。那么进入Bodys数组里的物体就可以用 上面的计算来给物体施加一个方向力了。 将炸弹爆炸之后计算出来的爆炸结果给物体加上: 利用这个方法↓: 给物体施加一个方向力(适用于刚体类节点) apply_central_impulse() #数组名.apply_central_impulse(算出的方向力结果)↓ Bodys.apply_central_impulse(Distance) 给数组里的物体施加一个方向力,这个方向力的力度就是:爆炸力 -(物体坐标 - 炸弹坐标) 最后的最后: 用Area判断范围的话,就算隔着墙壁也会被炸到,可以选择用射线来判断最近物体, 但是纯用射线的话计算出整个球体的全方向发射位置又会太吃性能,于是就想到了一个办法。 我们用范围先获取所有可以被炸到物体,然后再单独向这些物体发射射线(因为射线只能射到最近的物体) ,然后排除掉没有被射线射到的物体,剩下的就是可以被炸飞的物体了。 小小分享,非专业~
【Godot·GD】主角移动控制器分享 这是我在用的脚本,当做笔记和参考用: 【主角:重力刚体】 extends Spatial var i_X var i_Y var i_Z var i_zX var i_zY var i_zZ var i_zT var i_Speed var i_Jump func _playerXYZ(): i_X = $Player.transform.origin.x i_Y = $Player.transform.origin.y i_Z = $Player.transform.origin.z i_zX = $Camera.zoomx i_zY = $Camera.zoomy i_zZ = $Camera.zoomz i_zT = $Camera.zoomt i_Speed = $Player.movespeed i_Jump = $Player.movejump #这里的一切都是为了左上角的数据显示: # "%1.3f"% = 这个是变量规范化,控制只输出3位小数点 get_node("playerF3").text = "X="+str("%1.3f"%i_X) + " Y="+str("%1.3f"%i_Y) + " Z="+str("%1.3f"%i_Z) + \ "\n"+"ZX=" + str(i_zX) + " ZY=" + str(i_zY) + " ZZ=" + str(i_zZ) + " ZT=" + str(i_zT) + \ "\n"+"Speed=" + str(i_Speed*100) + "%" + " Jump=" + str(i_Jump*0.02*100) + "%" #func _physics_process(delta): #_playerXYZ() func _on_ticks_timeout(): _playerXYZ() func _process(_delta): var resetx = 0 var resety = 6 var resetz = 11 if Input.is_action_pressed("ui_end"): print("重置") $Player.translation.x = resetx $Player.translation.y = resety $Player.translation.z = resetz $Player.linear_velocity = Vector3() $Player.angular_velocity = Vector3() if Input.is_action_pressed("ui_page_up"): print("↑") $Player.rotation_degrees.x += 1 if Input.is_action_pressed("ui_page_down"): print("↓") $Player.rotation_degrees.z += 1 【子对象·碰撞体积】 extends CollisionShape func _process(_delta): #地板判定跟踪: #var _left = $"接触判定".transform.origin #var _body = $".".transform.origin $"接触判定".transform.origin = $".".transform.origin 【身体接触判定】 extends KinematicBody var onfloor var move = Vector3() func _process(_delta): #get_node("..").jumpON = jump if .is_on_floor(): onfloor = true else: onfloor = false #vel.y -= 1 move = move_and_slide(move, Vector3(0, 1, 0))
【MC】minecraft 药水物品数字 ID 373 Water Bottlepotion 373:16 Awkward Potionpotion:16 373:32 Thick Potionpotion:32 373:64 Mundane Potionpotion:64 373:8193 Regeneration Potion (0:45)potion:8193 373:8194 Swiftness Potion (3:00)potion:8194 373:8195 Fire Resistance Potion (3:00)potion:8195 373:8196 Poison Potion (0:45)potion:8196 373:8197 Healing Potionpotion:8197 373:8198 Night Vision Potion (3:00)potion:8198 373:8200 Weakness Potion (1:30)potion:8200 373:8201 Strength Potion (3:00)potion:8201 373:8202 Slowness Potion (1:30)potion:8202 373:8204 Harming Potionpotion:8204 373:8205 Water Breathing Potion (3:00)potion:8205 373:8206 Invisibility Potion (3:00)potion:8206 373:8225 Regeneration Potion II (0:22)potion:8225 373:8226 Swiftness Potion II (1:30)potion:8226 373:8228 Poison Potion II (0:22)potion:8228 373:8229 Healing Potion IIpotion:8229 373:8233 Strength Potion II (1:30)potion:8233 373:8235 Leaping Potion II (1:30)potion:8235 373:8236 Harming Potion IIpotion:8236 373:8257 Regeneration Potion (2:00)potion:8257 373:8258 Swiftness Potion (8:00)potion:8258 373:8259 Fire Resistance Potion (8:00)potion:8259 373:8260 Poison Potion (2:00)potion:8260 373:8262 Night Vision Potion (8:00)potion:8262 373:8264 Weakness Potion (4:00)potion:8264 373:8265 Strength Potion (8:00)potion:8265 373:8266 Slowness Potion (4:00)potion:8266 373:8267 Leaping Potion (3:00)potion:8267 373:8269 Water Breathing Potion (8:00)potion:8269 373:8270 Invisibility Potion (8:00)potion:8270 373:8289 Regeneration Potion II (1:00)potion:8289 373:8290 Swiftness Potion II (4:00)potion:8290 373:8292 Poison Potion II (1:00)potion:8292 373:8297 Strength Potion II (4:00)potion:8297 373:16385 Regeneration Splash (0:33)potion:16385 373:16386 Swiftness Splash (2:15)potion:16386 373:16387 Fire Resistance Splash (2:15)potion:16387 373:16388 Poison Splash (0:33)potion:16388 373:16389 Healing Splashpotion:16389 373:16390 Night Vision Splash (2:15)potion:16390 373:16392 Weakness Splash (1:07)potion:16392 373:16393 Strength Splash (2:15)potion:16393 373:16394 Slowness Splash (1:07)potion:16394 373:16396 Harming Splashpotion:16396 373:16397 Breathing Splash (2:15)potion:16397 373:16398 Invisibility Splash (2:15)potion:16398 373:16417 Regeneration Splash II (0:16)potion:16417 373:16418 Swiftness Splash II (1:07)potion:16418 373:16420 Poison Splash II (0:16)potion:16420 373:16421 Healing Splash IIpotion:16421 373:16425 Strength Splash II (1:07)potion:16425 373:16427 Leaping Splash II (1:07)potion:16427 373:16428 Harming Splash IIpotion:16428 373:16449 Regeneration Splash (1:30)potion:16449 373:16450 Swiftness Splash (6:00)potion:16450 373:16451 Fire Resistance Splash (6:00)potion:16451 373:16452 Poison Splash (1:30)potion:16452 373:16454 Night Vision Splash (6:00)potion:16454 373:16456 Weakness Splash (3:00)potion:16456 373:16457 Strength Splash (6:00)potion:16457 373:16458 Slowness Splash (3:00)potion:16458 373:16459 Leaping Splash (2:15)potion:16459 373:16461 Breathing Splash (6:00)potion:16461 373:16462 Invisibility Splash (6:00)potion:16462 373:16481 Regeneration Splash II (0:45)potion:16481 373:16482 Swiftness Splash II (3:00)potion:16482 373:16484 Poison Splash II (0:45)potion:16484 373:16489 Strength Splash II (3:00)potion:16489 没有写翻译,需要的可以在下面留言
【MC】1.11.2 Worldedit创世神: //setbiome <生物群系> 1.11.2 Worldedit创世神: //setbiome <生物群系> 英文空格的地方需要手动补下划线“_” ocean 海洋 plains 平原 desert 沙漠 extreme_hills 极地丘陵 forest 森林 taiga 针叶树 swampland 沼泽地 river 河 hell 地狱 the_end 末地 frozenocean 冰冻海洋 frozenriver 冰冻的河流 ice_plains 冰原 ice_mountains 冰山 mushroomisland 蘑菇岛 mushroomislandshore 蘑菇岛海岸 beach 海滩 deserthills 沙漠丘陵 foresthills 森林丘陵 taigahills 针叶林 extreme_hills_edge 极端丘陵边缘 jungle 丛林 junglehills 丛林丘陵 jungleedge 丛林边缘 deep_ocean 深海 stone_beach 石滩 cold_beach 冷海滩 birch_forest 桦树林 birch_forest_hills 桦树森林丘陵 roofed_forest 有屋顶的森林 cold_taiga 冷针叶林 cold_taiga_hills 寒冷的针叶林 mega_taiga 巨型针叶林 mega_taiga_hills 巨型针叶林 extreme_hills+ 极地丘陵+ savanna 热带草原 savanna_plateau 热带草原高原 mesa 梅萨 mesa_plateau_f 梅萨高原F mesa_plateau 梅萨高原 the_void 虚空 sunflower_plains 向日葵平原 desert_m 沙漠M extreme_hills_m 极限山M flower_forest 花林 taiga_m 针叶林 sawmpland_m 锯木地M ice_plain_spikes 冰原尖峰 jungle_m 丛林M jungleedge_m 丛林边缘M birch_forest_m 桦树林M birch_forest_hills_m 桦树森林丘陵 roofed_forest_m 屋顶森林 cold_taiga_m 冷针叶林 mega_spruce_taiga 巨云杉针叶林 redwood_taiga_hills_m 红木针叶林M extreme_hills+_m 极限山+m savanna_m 热带草原 savanna_plateau_m 草原高原M mesa_(bryce) 梅萨(布莱斯) mesa_plateau_f_m 梅萨高原F m mesa_plateau_m 梅萨高原M
【Notepad++】一些常用的正则表达式·笔记 Notepad++正则表达式语法(注意:Notepad++正则表达式字符串最长不能超过69个字符) \ 转义字符 如:要使用 “\” 本身, 则应该使用“\\” \t Tab制表符 注:扩展和正则表达式都支持 \r 回车符CR 注:扩展支持,正则表达式不支持 \n 换行符LF 注:扩展支持,正则表达式不支持 . 匹配任意一个字符 ^ 其右边的表达式被匹配在行首。如:^A匹配以“A”开头的行 $ 其左边的表达式被匹配在行尾。如:e$匹配以“e”结尾的行 | 或运算符,匹配表达式左边和右边的字符串。如:ab|bc匹配“ab”或“bc” [] 匹配列表中任意单个字符。如:[ab]匹配“a”或“b”;[0-9]匹配任意单个数字 [^] 匹配列表之外的任意单个字符。如:[^ab]匹配“a”和“b”以外的单个字符;[^0-9]匹配任意单个非数字字符 * 其左边的字符被匹配任意次(0次或多次)。如:be*匹配“b”,“be”或“bee” + 其左边的字符被匹配至少一次(1次或多次)。如:be+匹配“be”或“bee”,但不匹配“b” ? 其左边的字符被匹配0次或者1次。如:be?匹配“b”或“be”,但不匹配“bee”;\r?\n匹配行结尾符 () 影响表达式匹配的顺序(类似C++的小括号会影响表达式运算顺序),并且用作表达式的分组标记(标记从1开始)如:([a-z]bc)smn\1匹配“tbcsmntbc”;另见:看下文的示例 {} 指定前面的字符或分组的出现次数 如:abc{3}匹配abccc;a(bc){2}匹配abcbc \d 匹配一个数字字符。等价于:[0-9] \D \d取反,匹配一个非数字字符。等价于:[^0-9] \s 匹配任意单个空白字符:包括空格、制表符等(注:不包括换车符和换行符)。等价于:[ \t] \S \s取反的任意单个字符。 \w 匹配包括下划线的任意单个字符。等价于:[A-Za-z0-9_] \W \w取反的任意单个字符。等价于:[^A-Za-z0-9_] \b 匹配单词起始处或结尾处 如:\bin匹配int,但不匹配sing 示例1 123abcfg abc abcd 替换成: 123hello hello hello 方法 -- 查找串:abc.*$ 替换串:hello 示例2 123abcfg abc abcd 替换成: 123@abcfg@ @abc@ @abcd@ 方法 -- 查找串:(abc.*)$ 替换串:@\1@ 示例3 str[1]abc[991] str[2]abc[992] str[11]abc[993] str[222]abc[996] 替换成 god[991] god[992] god[993] god[996] 方法1 -- 查找串:str\[[0-9]+\]abc\[([0-9]+)\] 替换串:god[\1] 方法2 -- 查找串:str\[([0-9]+)\]abc\[([0-9]+)\] 替换串:god[\2] 示例4 删除所有空行 step1:a. 选择正则表达式 b. 查找串:^[ \t]*$ 替换串:空 step2:a. 选择扩展(\n,\r,\t,\0,\x...) b. 查找串:\r\n\r\n 替换串:\r\n 注:多次点击替换,直到没有可替换的字串
【MC·光影】seus10.1 修改夜晚亮度和饱和度。 吧友发问贴: https://tieba.baidu.com/p/6597978613 之前发的教程贴:https://tieba.baidu.com/p/5013270578 百度查了相关问题,好像没有得到解决,而且seus的夜间眼瞎好像是大家公认的尿性。 修改前:修改后:打开光影夜里还真的变成了色盲,什么颜色都看不出来,黑的看不清。 然后我找了代码看看,还是可以改的,虽然改出来没有什么气氛,这作者不仅降低了夜间的饱和度,夜间的光亮度,月光亮度都调整了,然后根据世界时间做计算,变量决定挺多的,不能在中途改。 还好作者留了主要的值,可以直接改。 光影文件 composite.fsh 里的 328 行开始,有一段这样的代码,名字起了夜视的称呼: void DoNightEye(inout vec3 color) { float amount = -0.3f; vec3 rodColor = vec3(1.0f, 1.0f, 1.0f); float colorDesat = dot(color, vec3(0.1f)); color = mix(color, vec3(colorDesat) * rodColor, timeMidnight * amount); } float amount 是去饱和度,也就是说值越高饱和度越低,我瞄了一眼默认值是0.8f, 0.8相当于删掉了80%的饱和度,真就接近色盲了,而下面的vec3 rodColor = vec3(0.2f, 0.5f, 1.0f); 默认值红20%绿50%蓝100%,这是三原色,黄光是需要红光和绿光叠加出来的,这红的没了, 黄光就几乎变成灰色,所以金块直接看不到了,长得跟白色羊毛似的。 不解释,这里按照100%保护度再相对降低一点点调整,建议不低于0.9f。 这都不是重点,重点是下面还有一个:
首页 1 2 下一页