在一切之前~ 我们要知道他究竟怎么运动的 看我们社区里arkos的草图
这很生动形象对吧,它构成了一个三角形(然后arkos怎么引入来着……
那么问题来了,如何根据移动方向,移动距离,求出 x 增加多少,y 增加多少呢?(arkos原话
对,这时候我们就要看看,我们这大名鼎鼎的三角函数了!
三角函数
三角函数其实并不复杂。三角函数主要包括三种:sin、cos、tan
三角函数 sin、cos、tan 的含义如下:
在一个直角三角形中,选择一个锐角 A,那么有:
- sin(A) = 对边长/ 斜边长
- cos(A)= 邻边长/ 斜边长
- tan(A) = 对边长/ 邻边长
这样,通过三角函数,我们就可以把角度和各个边联系起来
已知一个角度,一条边,就可以直接求出另外两条边的长度
例如,已知角 A 的大小,对边的长度,我们就可以求出邻边、斜边长:
- 邻边 = 对边 / tan(A)
- 斜边 = 对边 / sin (A)
对于同一个X,sin(X)、cos(X)、tan(X) 的值是分别固定已知的
在 Scratch 中,使用下面的积木来计算三角函数:
好极了!你了解了吗?
注:任务2-1 内容均从的arkos文章中引用
完成任务
很好!经过来自arkos老师的数学熏陶后,你懂了吗?
那么把他运用到我们的程序中吧!
由于我们程序不涉及角色跟随鼠标转动,
所以,每个角度我们都以45°为例
运用刚刚学到的三角函数知识,可以知道(d为距离):
- sin (方向) = x增量 / d
- cos (方向) = y增量 / d
因此,求出:
- x增量 = sin(方向) * d
- y增量 = cos(方向) * d
像这样↓
我们还需要把这个得出的数据用变量保存起来
但是你会发现,我们不需要一直判断 还要有水平行走的可能吧 这时候需要一个判断! 我们先把上面的表格弄下来:
x轴系数变化表 | w | s | 结果 |
第一种情况 | 0 | 1 | 0 - 1 = -1(向后) |
第二种情况 | 1 | 0 | 1 - 0 = 1(向前) |
第三种情况 | 1 | 1 | 1 - 1 = 0(不动) |
第四种情况 | 0 | 0 | 0 - 0 = 0(不动) |
y轴系数变化表 | d | a | 结果 |
第一种情况 | 0 | 1 | 0 - 1 = -1(向后) |
第二种情况 | 1 | 0 | 1 - 0 = 1(向前) |
第三种情况 | 1 | 1 | 1 - 1 = 0(不动) |
第四种情况 | 0 | 0 | 0 - 0 = 0(不动) |
你发现没有,如果在行走,那么值要么是1,要么是-1
所以我们可以把他们的值加起来
如果同时按下wa、wd、sd、as那就要么是2,要么是-2
所以,在套一个绝对值,那就只能是2了
所以直接判断这个值等不等于2就好了
代码这样:
好极了!组合起来,套上循环试试!
给自己呱唧呱唧👏
其实这是一个高中的知识点, 却被我们因为这个编程 “强制”学习好啦qwq 呱唧呱唧!
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=avg101/ben/lec1/02&type=comment"
title="{冒险游戏初级教程-第一课第二节}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>