猫史档案馆


【少院士讲堂】操作更加舒服的抛物线

用户:I桔汁糖浆II桔汁糖浆I查看:3 回复:19 评论:3 创建时间:2018-03-02T21:43:42


大家好我是上海,在萌新院是个高级后期打杂的

首先很高兴成为了少院士啊啊啊啊啊啊啊啊啊啊贼jier兴奋

然后进入正题:

一个阳光根本见不着的下午,我在放学路上无意想到了一个操作更加科学的抛物线实现方法,然后马不停蹄地赶回家,写了这个程序:

总体来说,是比较简单的


では、始めましょう!

首先,我们先创建这几个变量:


画红框的4个变量是比较重要的

然后就是一些七七八八处理力度的模块,反正这个你们一定能做出来的,而且随便指定一个数也行。我把力度这个数值贮存到名为force的变量中(下面图片中的模块是程序底下的那个力度显示条)




以及处理角度的模块,我把角度的数值贮存到名为angle的变量中(下面图片中的模块是程序中的粉色炮塔)




接下来,我们看看重点——炮弹的模块:


x、y这两个变量是私有变量

在这个模块中,大家会看到两个比较不常用的计算符:sin以及cos

为了解释这两个计算符的作用,我们先简单了解一下三角函数:

在这张图中,三角形ABC是一个直角三角形,A不是直角,AB为斜边,AC为A的邻边,BC为A的对边


那么,sin A就是指当A为某某角度时,A的对边BC与斜边AB的比值,即BC/AB

cos A就是指当A为某某角度时,A的邻边AC与斜边AB的比值,即AC/AB


这个时候,你不要被表象所迷惑,你只需要把他们当成函数,输入A的角度后会返回某两条边的商

现在的我们因为知识有限,就不用管别的公式或是原理,只要用他们的结果就行


那么问题来了:以sin 30度为例,我们可以得出BC/AB=sin 30度=0.5,那么我们可不可以把公式变形一下呢?设斜边AB的值为force的值,这里我们设为10,可得出BC=AB x sin 30度=10 x 0.5=5。此时此刻,我们求出了BC的值!


cos也是一样,设AB为10,可得AC=AB x cos 30度=10 x (根号3/2)=5又根号3。这时候,我们也把AB求出来了。


这时候,我们只要把他们带入到炮弹的x和y的变量中,让炮弹重复执行将他的x增加变量“x”的数值,y增加变量“y”的数值,然后把变量“y”减去合适的数值,就完成了!


这个方法让炮弹的抛物线控制变得更加舒服,只需要调整角度和力度,剩下的交给三角函数来完成


回复

上一页1 页 / 共 1下一页
I桔汁糖浆II桔汁糖浆I

技术贴几个月都没人看的

点赞0


评论


萌新what萌新what

哇塞吼流弊,我根本一窍不通

点赞0


评论


小泷小泷

完全不懂呢         

 

点赞0


评论


~断了个弦~~断了个弦~

欺负初二没学三角函数,告辞

点赞0


评论


杰鸽杰鸽

可以参照一下黄金比

或者……

开个物理引擎设置几个参数也很自然啊

点赞0


评论


温顺的疾电猴61温顺的疾电猴61

不懂

 

 

 

 

 

 

 

 

 

 

 

点赞0


评论


LHCKCLHCKC

不懂

点赞0


评论


Tom2008Tom2008

额……我才四年级,大佬们别欺负我…………………………………………………

点赞0


评论


我的地盘我作主我的地盘我作主

@爱丽丝上海  力度怎么可能小于0呢?>0<30呢?楼主能否把游戏链接发上来呢?

点赞0


评论


力言菌力言菌

表示5年级这是什么东西

点赞0


评论


DrindDrind

三年级额是什么

点赞0


评论


李凌yi李凌yi

用物理引擎就可以

点赞0


评论


我的地盘我作主我的地盘我作主

@爱丽丝の上海  力度怎么可能小于0呢?>0<30呢?楼主能否把游戏链接发上来呢?  

点赞0


评论


寒风之下寒风之下

还有更简单的

参考我的作品:跳一跳

点赞0


评论


少侠就是稽少侠就是稽

emotion_疑问emotion_疑问emotion_疑问emotion_疑问emotion_疑问emotion_编程猫_冷漠emotion_雷电猴_疑问

点赞0


评论


WixnkWixnk

话说为什么我总是发现有些应该正常运作的积木会莫名其妙的废掉

点赞0


评论


风雨  踏梦风雨 踏梦

楼楼   我看不懂

点赞0


评论


寒天白云寒天白云

ding

点赞0


评论


python喵呜python喵呜

NB

点赞0


评论