鲨鱼炸弹

2024-03-17 06:30
文章标签 炸弹 鲨鱼

本文主要是介绍鲨鱼炸弹,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2/3D游戏:2.5D

辅助插件:原生

游戏制作难度系数:初级

游戏教程网址:http://www.raywenderlich.com/4551/how-to-make-a-2-5d-game-with-unity-tutorial-part-1

1、背景自适应(GUITexture)正交模式

    void Start(){GUITexture gui = GetComponent<GUITexture>();// GUITexture的pixelInset值分别为://width: 510  height: 340// x: -255   y:  -170Rect r = new Rect();r.width = Screen.width;r.height = Screen.height;float m = 510 / -255f;float n = 340 / -170f;r.x = Screen.width / m;r.y = Screen.height / n;gui.pixelInset = r;}

2、控制摄像机旋转造成2.5D效果(利用数学知识完美解决)

float anglespan = 0;void Update(){//判断飞机是否超过屏幕的可视范围,如果超过就重置飞机的位置 ,20是根据mainCamera的Far来设定的if (transform.position.x > 20){speed = Random.Range(8f, 12f);transform.position = new Vector3(-20f, transform.position.y, transform.position.z);}transform.Translate(0, 0, speed * Time.deltaTime);//造成2.5D效果  nextZ可能的值为(初始值为0):2  4  6if (nextZ > mainCamera.transform.position.z){//作者的方法://float mx = 3 * Mathf.Sin(transform.position.z / 2) * Time.deltaTime;//float mz = -Mathf.Sin(transform.position.z / 2) * Time.deltaTime;// mainCamera.gameObject.transform.Translate(mx, 0, mz);float angle = Time.deltaTime * 5.7f;//改变背景图和camera的旋转,造成2.5D的效果
            mainCamera.gameObject.transform.Rotate(Vector3.up, angle);gameBackground.gameObject.transform.Rotate(Vector3.back, angle);//我的方法:计算摄像机每次旋转的角度anglespan = mainCamera.gameObject.transform.localEulerAngles.y - anglespan;float distance = Vector3.Distance(gameBackground.transform.position, mainCamera.transform.position);Vector3 zz = new Vector3(-distance * Mathf.Sin(anglespan * Mathf.Deg2Rad),0,distance * (1 - Mathf.Cos(anglespan * Mathf.Deg2Rad)));mainCamera.gameObject.transform.Translate(zz * Time.deltaTime);}

 

左图为鲨鱼没有被击中时候的正常状态,而右图为鲨鱼被击中两次后的状态

当鲨鱼被击中后,为了实现2.5D效果,完美要旋转摄像机和背景图,并且移动摄像机,摄像机和背景图的旋转好做,就是给他们同一个角度进行旋转即可,可是经过了旋转,为了保持摄像机原有的拍摄角度和画面,我们该怎么移动呢,这就要求旋转一定角度求摄像机的落点,看下图(俯视图):摄像机的位置(0,0,0),背景图的位置(0,0,20)

 

其他小知识:

  1、Translate的作用:就是正负号表示方向,值表示移动距离

      transform.Translate(new Vector3(-10, -transform.position.y + Random.Range(-4, -1), 0));//向x轴的反方向移动10个单位

转载于:https://www.cnblogs.com/MrZivChu/p/SharkGame.html

这篇关于鲨鱼炸弹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/818103

相关文章

【每日一题】LeetCode 1652.拆炸弹(数组、滑动窗口)

【每日一题】LeetCode 1652.拆炸弹(数组、滑动窗口) 题目描述 你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 n 的循环数组 code 以及一个密钥 k。 为了获得正确的密码,你需要替换掉每一个数字。所有数字会同时被替换。 如果 k > 0,将第 i 个数字用接下来 k 个数字之和替换。如果 k < 0,将第 i 个数字用之前 k 个数字之和替换。如果 k ==

今日算法:蓝桥杯基础题之“星系炸弹”

你好,我是沐爸,欢迎点赞、收藏、评论和关注。 今日算法第4题,如何布置星系炸弹,一起看看吧。 题目 在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。每个炸弹都可以设定多少天之后爆炸。比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。有一个贝塔炸弹,2024年8月30日放置,定时为1000天,请你计算它爆炸的准确日期。 JS 代码实现

linux bash shell之递归函数:fork炸弹

所谓fork炸弹是一种恶意程序,它的内部是一个不断在fork进程的无限循环,fork炸弹并不需要有特别的权限即可对系统造成破坏。fork炸弹实质是一个简单的递归程序。由于程序是递归的,如果没有任何限制,这会导致这个简单的程序迅速耗尽系统里面的所有资源。下面是Jaromil设计的最简单的fork炸弹: :() { :|:& };: 或者是 .() { .|.& };. 这么一行只有13个字符

pygame—炸弹牌(可做课设)

游戏介绍 在5X5的数字宫格里翻牌,翻出所有的2和3即可获胜每一格只能是0、1、2、3,第六列和最第六行为 X | Y,X代表该列或该行的数字总和,Y代表该列或该行的0的个数控制难度,每行每列的数字总和不超过9该游戏需要一定运气及技巧 核心代码 生成二维数字列表 def createNumList() -> list:arr = []for i in range(6):row = []ro

最新动态鲨鱼导航网引导页html源码

源码介绍 最新动态鲨鱼导航网引导页html源码 源码由HTML+CSS+JS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 https://download.csdn.net/download/huayula/89652529

二进制炸弹的fp是什么?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 问题描述   我在解二进制炸弹第四阶段的递归时,对主函数中的片段的理解如下: 8bc4: e3530002 cmp r3, #28bc8:

Applese 的毒气炸弹

【题目描述】 众所周知,Applese 是个很强的选手,它的化学一定很好。 今天他又AK了一套题觉得很无聊,于是想做个毒气炸弹玩。 毒气炸弹需要 k 种不同类型元素构成,Applese一共有 n 瓶含有这些元素的试剂。  已知元素混合遵循 m 条规律,每一条规律都可以用 "x y c" 描述。 表示将第 x 瓶试剂混入第 y 瓶试剂或者把第 y 瓶试剂混入第 x 瓶试剂,需要消耗 c 的脑力。

Swift语言:苹果在程序员社区投下的重磅炸弹

6月3日凌晨,苹果WWDC全球开发者大会传来消息,苹果公司在此次大会上丢出重磅炸弹——爆冷推出名为Swift的新语言,此消息一时在程序员群体中炸开了锅,掌握Objective-C语言及正在学习Objective-C语言的程序员们对天长叹,难道末路已到?而微博、微信、论坛上大量调侃的消息亦层出不穷,甚至有网友晒出Objective-C相关学习资料被丢到垃圾桶的照片,总之一时之间Swift语言成为网络

力扣每日一题-拆炸弹-2024.5.5

力扣题目:拆炸弹 题目链接: 1652.拆炸弹 题目描述 代码思路 根据代码实现分为k等于0和k不等于0的情况。k等于0很容易处理,而k不等于0时,需要使用滑动窗口的方式来解决。先根据小于0或大于0确定一个窗口,然后移动,获取修改后该位置的值,直到整个数组修改完毕。 代码解析版 class Solution {public int[] decrypt(int[] code

Leetcode—1652. 拆炸弹【简单】

2024每日刷题(127) Leetcode—1652. 拆炸弹 实现代码 class Solution {public:vector<int> decrypt(vector<int>& code, int k) {int codeSize = code.size();vector<int> ans(codeSize, 0);if(k == 0) {return ans;}if(k >