scracth跑酷游戏的爬墙特效怎么制作?
我将墙壁分为了 Walleft 和 wallright目的是为了让程序对两种不同的现象做出更智能的反应
如果不需要划分,请在回复里著名
另:
我没有办法用简洁的blocks判断是不是靠近墙壁!scarch的自定义积木块不支持返回值 在Scratch中制作跑酷游戏的爬墙特效,可以通过以下步骤实现。为简化问题,我们暂时不区分Walleft和wallright,你可以稍后根据需要进行调整。
1、首先,在角色(跑酷游戏中的玩家角色)中创建两个新变量:isTouchingWall 和 wallSide。isTouchingWall 用于判断角色是否接触到墙壁,wallSide 用于判断接触的墙壁是左边还是右边。
2、在角色的脚本中添加以下代码:
当绿旗被点击
重复执行直到 <角色碰到(游戏结束)>
如果 <碰到(Walleft)> 那么
设定 isTouchingWall 为 1
设定 wallSide 为 "left"
否则 如果 <碰到(wallright)> 那么
设定 isTouchingWall 为 1
设定 wallSide 为 "right"
否则
设定 isTouchingWall 为 0
结束
3、根据isTouchingWall 和 wallSide 的值,控制角色的运动。例如,当碰到左边的墙时,角色向右爬;碰到右边的墙时,角色向左爬。
当绿旗被点击
重复执行直到 <角色碰到(游戏结束)>
如果 <isTouchingWall = 1> 那么
如果 <wallSide = "left"> 那么
角色向右爬
否则 如果 <wallSide = "right"> 那么
角色向左爬
结束
否则
角色正常移动
结束
在这个示例中,我们没有使用自定义积木块来判断是否靠近墙壁,而是通过变量isTouchingWall 和 wallSide 进行判断。你可以根据自己的需求调整代码以适应你的游戏设计。 isdkz 发表于 2023-4-10 22:07
在Scratch中制作跑酷游戏的爬墙特效,可以通过以下步骤实现。为简化问题,我们暂时不区分Walleft和wallrigh ...
可是我的积木块中设置了:如果碰到了wallelt就像左移动。所以应该使用积木块判断x和y距离是否分别小于10 Threebody1 发表于 2023-4-10 22:12
可是我的积木块中设置了:如果碰到了wallelt就像左移动。所以应该使用积木块判断x和y距离是否分别小于10
了解您的需求了,我们可以通过计算角色与墙壁之间的 X 和 Y 距离来实现这个功能。首先,在角色中创建两个新变量:distanceX 和 distanceY。
然后在角色的脚本中添加以下代码,用于计算角色与 Walleft 和 wallright 之间的 X 和 Y 距离:
当绿旗被点击
重复执行直到 <角色碰到(游戏结束)>
设定 distanceX 为 (abs (x 位置 - (Walleft 的 x 位置)))
设定 distanceY 为 (abs (y 位置 - (Walleft 的 y 位置)))
如果 <(distanceX < 10) 和 (distanceY < 10)> 那么
角色向左移动
结束
设定 distanceX 为 (abs (x 位置 - (wallright 的 x 位置)))
设定 distanceY 为 (abs (y 位置 - (wallright 的 y 位置)))
如果 <(distanceX < 10) 和 (distanceY < 10)> 那么
角色向右移动
结束
角色正常移动
结束
这段代码会计算角色与 Walleft 和 wallright 之间的 X 和 Y 距离,并根据距离来判断角色是否需要向左或向右移动。如果 X 和 Y 距离都小于 10,那么角色将根据墙壁的位置进行移动。
您可以根据需要调整距离值(例如,将 10 更改为其他值),以便更好地适应您的游戏设计。 isdkz 发表于 2023-4-10 22:15
了解您的需求了,我们可以通过计算角色与墙壁之间的 X 和 Y 距离来实现这个功能。首先,在角色中创建两个 ...
确实这是一种思路
我有一个疑问,大量的复制恐怕不好,可不可以写一个积木块,修改一个 result 变量?像这样:
// 原谅我的英语
define is_close(x1, y1, x2, y2)
//scratch写成python了
if ( abs ( x1 - x2 ) < 10 ) and ( abs ( y1 - y2 ) < 10)
result = 1
else
result = 0
另:怎么获取wallleft、wallright的x、y坐标?
我发现你的机器人助手似乎没有发现我的问题里的 walleft 少了一个 L Threebody1 发表于 2023-4-10 22:21
确实这是一种思路
我有一个疑问,大量的复制恐怕不好,可不可以写一个积木块,修改一个 result 变量? ...
抱歉我之前没有注意到拼写错误,现在我明白您的问题了。在 Scratch 中,您可以使用自定义积木块来实现您所描述的功能。
首先,创建一个名为 is_close 的自定义积木块,然后添加四个输入参数:x1、y1、x2 和 y2。将该积木块设置为运行而不输出,因为我们将使用一个全局变量 result 来存储结果。
接下来,在您的自定义积木块中添加以下代码:
定义 is_close (x1) (y1) (x2) (y2)
如果 <((abs (x1 - x2)) < 10) 和 ((abs (y1 - y2)) < 10)> 那么
设定 result 为 1
否则
设定 result 为 0
结束
在主脚本中,您可以使用以下代码来获取 Walleft 和 Wallright 的 x 和 y 坐标,并调用 is_close 自定义积木块:
当绿旗被点击
重复执行直到 <角色碰到(游戏结束)>
is_close (角色的x位置) (角色的y位置) (Walleft 的 x 位置) (Walleft 的 y 位置)
如果 <result = 1> 那么
角色向左移动
结束
is_close (角色的x位置) (角色的y位置) (Wallright 的 x 位置) (Wallright 的 y 位置)
如果 <result = 1> 那么
角色向右移动
结束
角色正常移动
结束
要获取 Walleft 和 Wallright 的 x 和 y 坐标,只需在积木块中使用类似于 (Walleft 的 x 位置) 和 (Walleft 的 y 位置) 的表达式即可。
再次为之前的拼写错误表示歉意,希望这次的解答能帮助到您。 isdkz 发表于 2023-4-10 22:25
抱歉我之前没有注意到拼写错误,现在我明白您的问题了。在 Scratch 中,您可以使用自定义积木块来实现您 ...
我是说,哪个积木块可以获取到wallleft、wallright的x、y坐标?注意代码是写在可以移动的角色的脚本上的
https://t1.wodetu.cn/2023/04/10/2881a9073b703aafad6b45d648bd74fc.png
这chatgpt还得再训练一下哈 Threebody1 发表于 2023-4-10 22:32
我是说,哪个积木块可以获取到wallleft、wallright的x、y坐标?注意代码是写在可以移动的角色的脚本上 ...
{:5_97:} isdkz 发表于 2023-4-10 22:34
不过呢,问题还是得回答的{:10_256:}
我是说,哪个积木块可以获取到wallleft、wallright的x、y坐标?注意代码是写在可以移动的角色的脚本上的 Threebody1 发表于 2023-4-10 22:35
不过呢,问题还是得回答的
抱歉我之前的回答没有完全解决您的问题。在 Scratch 中,您不能直接在一个角色的脚本中获取另一个角色的 x 和 y 坐标。但是,您可以使用全局变量来实现这一目标。
首先,在角色中创建四个新变量:walleftX、walleftY、wallrightX 和 wallrightY。然后,在 Walleft 角色的脚本中添加以下代码:
当绿旗被点击
重复执行直到 <游戏结束>
设定 walleftX 为 (x 位置)
设定 walleftY 为 (y 位置)
等待 0.1 秒
结束
接下来,在 Wallright 角色的脚本中添加以下代码:
当绿旗被点击
重复执行直到 <游戏结束>
设定 wallrightX 为 (x 位置)
设定 wallrightY 为 (y 位置)
等待 0.1 秒
结束
现在,您可以在主角色的脚本中使用这些全局变量来调用 is_close 自定义积木块:
当绿旗被点击
重复执行直到 <角色碰到(游戏结束)>
is_close (角色的x位置) (角色的y位置) (walleftX) (walleftY)
如果 <result = 1> 那么
角色向左移动
结束
is_close (角色的x位置) (角色的y位置) (wallrightX) (wallrightY)
如果 <result = 1> 那么
角色向右移动
结束
角色正常移动
结束
这样一来,您就可以在主角色的脚本中获取 Walleft 和 Wallright 的 x 和 y 坐标,并使用这些坐标来判断角色是否接近这两个墙壁。 isdkz 发表于 2023-4-10 22:37
抱歉我之前的回答没有完全解决您的问题。在 Scratch 中,您不能直接在一个角色的脚本中获取另一个角色的...
所以我最佳答案是给哪个回答呢{:10_277:} Threebody1 发表于 2023-4-10 22:39
所以我最佳答案是给哪个回答呢
看着给呗{:5_97:}
页:
[1]