【免费源码】scratch《最强高尔夫》🌸 温馨提示:本文源码免费,已更新至公众号菜单栏【免费源码】 程序打开了之后,会出现一个高尔夫球场,高尔夫球会在眼前,球洞会在远处。点击模型角色可以切换不同模式,每根球轩都有不同的力度和弹道特征。自己判断的时机,根据滑块的位置,按下空格键,球就会沿着鼠标的方向飞出。球在飞的过程当中会受到风的影响,落地之后还会有弹跳,模拟物理效果。如果球飞出了边界(碰到了蓝色),就会再次回到起点;如果球落到了绿色区域,画面就会拉近来,你这时可以换到推杆模式,如果球进入洞内,就会显示成绩。1️⃣ 第一步:上传角色
一共有12个角色,你可以下载素材文件,直接打开编写程序。讲一下主要这些角色的作用,舞台负责背景的切换与游戏的初始化,滑条和力度角色用来挥杆蓄力,模式用来过球杆切换,方向负责风力指示,红旗和点是用于标记球洞的,树用来装饰球场,文本用来显示成绩,指示牌是提示信息。2️⃣ 第二步:变量创建
这个项目用了很多变量,如果不懂可以找AI翻译一下。下面挑一些重点来说:BallDxBallDyBallDz 用来控制球的x,y,z方向速度WindDxWindDyWindSpeed 用来控制风力的方向和速度Power 击球的力度,trokes 记录击球次数OnGreen 球是否在绿色上面,TrajectoryClubPowerHtDy 球杆类型BallStopped 球是否停止, HoleXHoleY 球洞坐标这个程序比较难,不合适上课,只合适来研究,吕老师只研究了核心代码,感兴趣的请自行研究。3️⃣ 第三步:核心逻辑实现
🏌️ 滑条——挥杆蓄力
滑条是玩家是否击好球的核心,收到startwing广播后,滑条就会开始变化,从底部向上滑动,最高是力度最大,最下面是力度最小。结束判断有没有按下空格键,如果按下了,滑条不动了,开始计算力度power,松开之后广播prehiball击球;🏸 模式——球杆切换
模式角色有4个造型:长打木杆、中铁杆、高抛铁杆、推杆。点击角色循环切换,切换后广播setupclub,统一设置物理参数。
木杆力量最大,弹道最平;高抛杆力量最小但弹道最弯曲;推杆弹道为0,只在近距离使用。💨 阴影——球的物理引擎
阴影角色是整个程序的物理引擎,也是整个程序当中最复杂的了。收到prehitall后,首先会面向鼠标方向,用正弦余弦函数把power分解为BallDx和BallDy两个方向的力(速度),然后BallDz乘以Power得到垂直方向的力,然后循环到力足够小且落地。每循环一次都会累加风力影响(WindDx × Dt / 5000),球会被慢慢吹偏;根据HtDy是否大于0判断球是在空中还是在地面了。还有两个摩擦系统,一个是阻力小是在空中,另外一个助力大不是在地面草地上,模拟了不同环境下的减速。⚪ 球——碰撞检测与进洞判定
这个程序最有趣的地方在于缩放:如果球离球洞比较近,就会切换拉近视角。碰撞检测:碰到了“点”角色且速度低于0.8,如果刚好在洞口的位置就进洞。🌬️ 方向——风力系统
方向角色是模拟了风,每局开始都会随机生成风向和风速,然后通过三角函数分解成两个方向。如果对三角函数不太理解的读者可以看一下之间的教学文章: