Unity3D 实用技巧 - 基础知识大全集(四)

本文介绍了Unity3D中如何利用物理引擎模拟《愤怒的小鸟》的抛物线轨迹,涉及重力和空气阻力的计算方法。同时涵盖逻辑推理问题,如数字序列规律、找零逻辑、图形序列、火柴棒拼数字、岛屿红眼人问题、逻辑判断题、经济交易计算、开关灯谜题、数制转换、素数筛选、杨辉三角及日期判断等多方面知识,展现了Unity3D的基础应用与数学思维在编程中的运用。
Part5: 案例类
1、 《愤怒的小鸟》给予初速度以后,怎么让小鸟受到重力和空气阻力的影响而绘制抛物线轨迹,说出具体的计算方法。
Vector3 v 代表初速度 v'代表现在的速度, 假设小鸟是沿的 z 轴也就是 transform.forward方向运动的质量为 1,那么 v'=v-new Vector3(0,g t,f t),transform.Translate(v')做的就是抛物线运动(g 为重力加速度不要用现实中的需要自己调试,f 为阻力也要自己调试设置,t 为时间)
2、 观察数字:54321,43215,32154,(),15432,第四个数字是多少?
21543
3、 小赵的店里来了一位顾客,挑了20元的货,顾客拿出50元,小赵没有零钱找不开,就到隔壁小韩的店里把这50元换成零钱,回来给顾客找了30元零钱,过了一会儿,小韩来找小赵,说刚才的是假钱,小赵马上给小韩换成了一张真钱,问:在这一过程中小赵赔了多少钱?
80元
4、 观察3、3、8、8这一组数字,不改变数字顺序,加入运算符号和括号,将这些数字组成一个算式,使结果等于27。
(3+3/8)*8=27
5、 图形共有2000个,按照下面的规律排列: △□□□△□□□△□□□……第1995个图形是什么?
1995 % 4 = 3 所以是方块
6、 用三根火柴要摆成一个最小的数(不许把火柴折断或者弯曲),这个数是什么?
-11
7、 说一个岛上有100个人,其中5个红眼睛,95个蓝眼睛。这个岛上有三个奇怪的宗教规则。
他们不能照镜子,不能看自己眼睛的颜色。
他们不能互相交流眼睛颜色的问题,也不能告诉别人对方的眼睛是什么颜色。
一旦有人知道了自己眼睛的颜色,他就必须在当天夜里自杀。
注:虽然题设了5个红眼睛,但岛民是不知道具体数字的。
岛民一直过着宁静的生活,相安无事。某天,有个旅行者到了这个岛上,由于不知道这里的规矩,所以一起狂欢的时候,不留神就说了一句:你们这里有红眼睛的人。
最后的问题是:
(1) 假设这个岛上的人够聪明,每个人都可以做出缜密的逻辑推理。请问这个岛上将会发生什么?
(2) 为什么旅行者看似无意义的一句话改变了岛上的格局?
" 因为自从那个人说了岛上有红眼人后他们开始思考自己眼睛的颜色,假如有一个红眼人,那么他看到99个蓝眼人,他第一天会自杀,如果有两个红眼人,他看到98蓝1红,如果他发现那个红眼人第一天没自杀那么他将意识到他也是红眼人,故第二天两个红眼人都将自杀,同理可推知,第五天五个红眼人将自杀,五个红眼人自杀之后,通过推理,剩下的都是蓝眼人了,所以第六天,剩下的蓝眼人都自杀了。
8、 有4位好友,其中一个人干了一件好事,不留名,记者来查此事,问4位,他们的回答如下:
A:不是我 B:是C C:是D D:他胡说
已知3个人说真话,一个人说假话,现在根据以上信息找出做了好事的人(并编程实现)
a.假设A讲假话,其馀三人讲真话,则B和C出现矛盾,所以假设不成立,A讲真话。
b.假设B讲假话,其馀三人讲真话,则C和D的,说法出现矛盾,所以假设不成立,B讲真话。
c.假设C讲假话,其馀三人讲真话,则A、B、D的证供都成立,所以假设成立,C讲假话。
d.假设D讲假话,其馀三人讲真话,则B和C出现矛盾,所以假设不成立,D讲真话。
推出,C是做好事的人。
提示:
第一步:被测者从1—4
第二步:将被测者代入表达式
第三步:判断3个表达式为真吗?是的则打印结果程序结束。不是,判断是否全测完,不是转第一步,是打印未找到,程序结束。完成下面的程序。
    
# include < stdio . h > main ( ) { int k = 0 , sum = 0 , g = 0 ; char man = ' ' ; for ( k = 1 ; k <= 4 && g == 10 ; k ++ ) { man = 64 + k ; sum = ( man != 'A' ) + ( man == 'C' ) + ( men == 'D' ) + ( men != 'D' ) ; if ( sum == 3 ) { clrscr ( ) ; printf ( "\nman=%c\n" , 64 + k ) ; g = 1 ; } } if ( g != 1 ) printf ( "can't found! " ) ; getch ( ) ; }
9、 你拥有A块钱,一瓶水B块钱,每瓶水可以得到一个瓶盖,每C个瓶盖可以换一瓶水请写出函数求解上面题目,上面题目ABC为参数
    
public static int Buy ( int a , int b , int c ) { return a / b + ForCap ( c , a / b ) ; } public static int ForCap ( int c , int d ) { if ( d return 0 ; } else { return d / c + ForCap ( c , d / c + d % c ) ; } }
10、 有一排开关,第一个人把所有的开关打开,第二个人按2的倍数的开关,第三个人按3的倍数的开关,以此类推,现在又n个开关,k个人,写函数求最后等两者的开关,输入参数n和k
    
static void Main ( string [ ] args ) { int n = int . Parse ( Console . ReadLine ( ) ) ; int k = int . Parse ( Console . ReadLine ( ) ) ; Function ( 100 , 100 ) ; } static void Function ( int n , int k ) { int i , j = 0 ; bool [ ] a = new bool [ 1000 ] ; //初始false:关灯,true:开灯 for ( i = 1 ; i <= k ; i ++ ) //k个人 for ( j = 1 ; j <= n ; j ++ ) //n个灯 if ( j % i == 0 ) a [ j ] = ! a [ j ] ; //取反,false变true,原来开变关,关变开 for ( i = 1 ; i <= n ; i ++ ) //最后输出a[i]的值就可以了 if ( a [ i ] ) //灯亮着 Console . WriteLine ( i ) ; }
11、 数制转换,将任意整数转换成8进制形式
    
static void Main ( string [ ] args ) { int n ; n = int . Parse ( Console . ReadLine ( ) ) ; Console . WriteLine ( "输入的10进制为:{0}" , n ) ; Console . Write ( "转换为8进制数为: " ) ; d2o ( n ) ; } static void d2o ( int n ) { if ( n > 7 ) { d2o ( n / 8 ) ; } Console . Write ( n % 8 ) ; }
12、 找出200以内的素数。
    
static void Main ( string [ ] args ) { int count = 0 ; for ( int i = 1 ; i < 200 ; i ++ ) { //外层循环:要判断的数 for ( int j = 2 ; j <= i ; j ++ ) { if ( i % j == 0 && i != j ) { break ; } if ( j == i ) { //结束的条件:最后一个数还没有被整除 count ++ ; Console . WriteLine ( i ) ; } } } Console . WriteLine ( count ) ; }
13、 打印杨辉三角形
    
public static void YHSJ ( ) { int [ ] [ ] a = new int [ 7 ] [ ] ; a [ 0 ] = new int [ 1 ] ; //a[0][0]=1; a [ 1 ] = new int [ 2 ] ; for ( int i = 0 ; i < 7 ; i ++ ) { a [ i ] = new int [ i + 1 ] ; a [ i ] [ 0 ] = 1 ; a [ i ] [ i ] = 1 ; if ( i > 1 ) { //求出中间的数据 for ( int j = 1 ; j a [ i ] [ j ] = a [ i - 1 ] [ j - 1 ] + a [ i - 1 ] [ j ] ; } } } for ( int i = 0 ; I for ( int k = 0 ; k < a . 长度 - 1 - i ; k ++ ) { Console . Write ( "" ) ; } for ( int j = 0 ; j Console . Write ( a [ i ] [ j ] + "" ) ; } Console . WriteLine ( ) ; } }
14、 中国有句俗话“三天打鱼两天晒网”,某人从2000年1月1日起开始“三天打鱼两天晒网”,问这个人在今后的某天中“打鱼”还是”晒网”
    
public static void Compute ( ) { Console . WriteLine ( ( DateTime . Now - DateTime . Parse ( "2000-01-01" ) ) . Days % 5 < 3 ? "打鱼" : "晒网" ) ; }
15、 假设当前市场价一只鸡10元,一只鸭12元5角。请写一个函数ShowPrice,输入参数分别为鸡和鸭的个数(非负整型),功能为显示出总价钱,精确到分。例如调用ShowPrice(5,10)后输出175.00。请注意程序的可读性和易于维护性。
    
static void ShowPrice ( int num_chicken , int num_duck ) { float totalPrice = 0.00f ; float price_chicken = 10f ; float price_duck = 12.5f ; totalPrice = num_chicken * price_chicken + num_duck * price_duck ; Console . WriteLine ( "总价钱为:{0:0.00}" , totalPrice ) ; }
16、 请写一个函数,用于返回n!(阶乘)结果末尾连续0的个数,如GetZeroCount(5)返回1,因为5! = 120,末尾连续1个0
    
static void Main ( string [ ] args ) { int fac = Factorial ( 5 ) ; Console . WriteLine ( CountZero ( fac ) ) ; } public static int Factorial ( int n ) { if ( n == 1 ) { return 1 ; } else { return n * jiecheng ( n - 1 ) ; } } //求连续的0的个数 public static int CountZero ( int num ) { int result = 0 ; //最后的结果 String numStr = num . ToString ( ) ; for ( int i = numStr . 长度 - 1 ; i >= 0 ; i -- ) { if ( numStr [ i ] == '0' ) { result ++ ; } else { break ; } } return result ; }
学习无止境,上述也只是一部分的汇总,欢迎大家敲窗交流。
基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力和滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性和外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构与权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性和稳定性。此外,文档还列举了量相关的科研方向和技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习和掌握RBF神经网络与滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度与鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析与仿真验证相结合。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值