unity怎样使2d游戏自由unity2d边缘碰撞器没有物理效果

扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
当前位置: &
查看: 3602|回复: 12
unity3D 2D轰炸机游戏 爆炸效果和碰撞须知(二)
4458/500排名<font color="#FF昨日变化主题帖子积分
四处流浪, 积分 458, 距离下一级还需 42 积分
四处流浪, 积分 458, 距离下一级还需 42 积分
在线时间92 小时
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
本帖为之 初识小游戏续篇,部分内容与上篇有关,一口气写不完哈,现在开始。
四、爆炸效果
1)本游戏中包含有2个爆炸效果,这里以飞机丢下的炮弹为例。
BombCell.png (169.82 KB, 下载次数: 4)
22:23 上传
创建一个cube,将mesh改为sprite这是2D游戏对象必备的步骤,将图片拖放到对象中设置其为transparent为diffuse并设置其xy坐标,因为这张图里有很多炮弹,但我们只需要其中一个。
QQ图片14.jpg (85.12 KB, 下载次数: 1)
22:28 上传
接下来,设置爆炸效果。
Explosion2.png (456.46 KB, 下载次数: 4)
22:31 上传
同样创建一个cube并改为sprite,书写脚本,代码如下:
[C#] 纯文本查看 复制代码public class explosionController : MonoBehaviour {
private bool isPlaying =
private AniS
public AudioC
void Start () {
anisprit = gameObject.GetComponent(&AniSprite&) as AniS
AudioSource.PlayClipAtPoint(explosion, transform.position);
// Update is called once per frame
void Update () {
if (isPlaying)
isPlaying = anisprit.Sprite(4, 6, 0, 0, 20, 24, 1f);
anisprit.Sprite(4, 6, 0, 0, 20, 24, 1f);的意思是:改图是一个4列6行的动画图,图以坐标(0,0)开始,总帧数给定20帧,帧速率24,总用时1秒
这里用一个简单的图说明下。
propeller.png (14.51 KB, 下载次数: 3)
22:40 上传
这图是飞机的螺旋桨,3列1行的图。可以想象,我们每次都只需要该图的三分之一,初始xy坐标是(0.33,1)这个不难理解,offser.x = 0.33,offset.y = 0。也就是说只有offset.x在变,变化为0.33,0.66,0.99,totalframes=3,可以推断出
int index = (int)Time.time % 3;使得renderer.material.mainTextureOffset = Vector2(index*1.0/3,0);但此时,我们使用的时间单位是秒,若要加快变化速率,就得将Time.time*速率值,这个需要大家细细体会。
2)炮弹爆炸
创建个PreFabs文件夹,将刚做好的爆炸效果拖到里面,因为爆炸是频繁出现的~~此时,给刚才的炮弹添加一个rigidbody组件,勾选重力。接下来就是关于碰撞的那些事儿了,先贴代码
[C#] 纯文本查看 复制代码public class BombController : MonoBehaviour {
public GameO
public AudioClip bombS
//myExplotion不能是刚体,否则碰撞检测后,刚体立即消失;
private GameObject myE
void Start () {
AudioSource.PlayClipAtPoint(bombSound, new Vector3(0,0,-5));
void OnCollisionEnter(Collision collision)
Transform tank0;
//设置碰撞标记的物体是&tank&
if (collision.gameObject.tag == &tank&)
//预制一个爆炸效果
myExplosion = Instantiate(explosion,new Vector3(transform.position.x,transform.position.y,-1),Quaternion.identity) as GameO
tank0 = GameObject.FindGameObjectWithTag(&tank0&).gameObject.
tank0.position = new Vector3(13,tank0.position.y);
PlaneController.score += 10;
//0.5f后销毁爆炸效果
Destroy(myExplosion,0.5f);
//销毁炸弹本身
Destroy(gameObject);
if (collision.gameObject.tag == &projectile&)
Destroy(collision.gameObject);
Destroy(gameObject);
if (collision.gameObject.tag == &ground&)
myExplosion = Instantiate(explosion, new Vector3(transform.position.x, transform.position.y, -1), Quaternion.identity) as GameO
Destroy(myExplosion, 0.5f);
Destroy(gameObject);
IEnumerator DestroyExplosion()
yield return new WaitForSeconds(0.5f);
Destroy(myExplosion);
void Update () {
这里总结下本人对于书写碰撞脚本的心得。
查看官方文档,碰撞可触发2种方式处理碰撞逻辑,一个是OnCollisionEnter,另一个OnTriggerEnter,一个是两者区别在于,使用后者的话,必须在被碰撞体的collider组件中勾选is trigger。
五、控制飞机的移动
控制飞机的移动,这里先说明,本游戏是在pc端的,本人也有制作windows phone的,但由于资质尚浅,手机端的还有些技术,若日后解决了再专门写一篇和大家分享。
原归正传,创建一个飞机的类,这里我们叫PlaneController通过方向键控制飞机↑ ↓ ← →
代码如下:
[C#] 纯文本查看 复制代码gameObject.transform.Translate(Vector3.right*Input.GetAxis(&Horizontal&) * planeSpeed * Time.deltaTime);
gameObject.transform.Translate(Vector3.up*Input.GetAxis(&Vertical&) * planeSpeed * Time.deltaTime);
具体方向大家根据坐标系而定,这里不再讨论。
时间关系,这次有写不完了,只能到下一篇了,说不到的地方,还请大家指出,一起学习一起进步。下一回就最后将一下坦克的自动瞄准功能,那个还挺有意思的。
未完待续.....
碰撞 移动;unity3unity3d碰撞没反应;unity3d碰撞弹出;unity3d碰撞;unity3d中碰撞;unity3d windows phone 8
蛮牛币 +30
每日推荐:
260/150排名<font color="#FF昨日变化主题帖子积分
初来乍到, 积分 60, 距离下一级还需 90 积分
初来乍到, 积分 60, 距离下一级还需 90 积分
在线时间5 小时
坐等第三篇,希望快点出
每日推荐:
127/50排名<font color="#FF昨日变化1主题帖子积分
注册看看, 积分 27, 距离下一级还需 23 积分
注册看看, 积分 27, 距离下一级还需 23 积分
在线时间2 小时
啊啊!前排!!
初学Unity,这个教程真是太好了!!
每日推荐:
4410/500排名<font color="#FF昨日变化2主题帖子积分
四处流浪, 积分 410, 距离下一级还需 90 积分
四处流浪, 积分 410, 距离下一级还需 90 积分
在线时间78 小时
楼主头像V5
每日推荐:
16排名2昨日变化主题帖子积分
蛮牛币16135
在线时间2273 小时
&&PO主,要更新第三篇啦~~~
每日推荐:
61469/1500排名<font color="#FF昨日变化主题帖子积分
蛮牛粉丝, 积分 1469, 距离下一级还需 31 积分
蛮牛粉丝, 积分 1469, 距离下一级还需 31 积分
蛮牛币2697
在线时间208 小时
.........................................
每日推荐:
4458/500排名<font color="#FF昨日变化主题帖子积分
四处流浪, 积分 458, 距离下一级还需 42 积分
四处流浪, 积分 458, 距离下一级还需 42 积分
在线时间92 小时
PO主,要更新第三篇啦~~~
昨天在写第三部,写完提交的时候说有字符串错误,后来点恢复数据,只恢复了一半。。太闹心了
每日推荐:
16排名2昨日变化主题帖子积分
蛮牛币16135
在线时间2273 小时
昨天在写第三部,写完提交的时候说有字符串错误,后来点恢复数据,只恢复了一半。。太闹心了 ...
& &我擦 ~& &那就是我们的不对了!& & 这也能出问题!& && &下次就提交前& &复制到word里!
每日推荐:
268/150排名<font color="#FF昨日变化4主题帖子积分
初来乍到, 积分 68, 距离下一级还需 82 积分
初来乍到, 积分 68, 距离下一级还需 82 积分
在线时间9 小时
谢谢楼主。教程很给力,期待源码,图片都让论坛打水印了
每日推荐:
2144/150排名<font color="#FF昨日变化2主题帖子积分
初来乍到, 积分 144, 距离下一级还需 6 积分
初来乍到, 积分 144, 距离下一级还需 6 积分
在线时间18 小时
恩,不错,送人鲜花,手留余香。。。
每日推荐:
4458/500排名<font color="#FF昨日变化主题帖子积分
四处流浪, 积分 458, 距离下一级还需 42 积分
四处流浪, 积分 458, 距离下一级还需 42 积分
在线时间92 小时
感谢感谢,目前正在努力学习中,等过段时间再送上新文章
每日推荐:
5783/1000排名<font color="#FF昨日变化主题帖子积分
熟悉之中, 积分 783, 距离下一级还需 217 积分
熟悉之中, 积分 783, 距离下一级还需 217 积分
蛮牛币2020
在线时间131 小时
楼主威武.万岁。回复时字数居然不够
每日推荐:
9排名<font color="#FF昨日变化主题帖子积分
在线时间220 小时
那个播放序列动画的方法写的不错啊 让我烤下来了备用
每日推荐:
社区QQ达人
使用QQ帐号登录论坛的用户
累积数量不足1000蛮牛币
游戏蛮牛QQ群会员
加入游戏蛮牛官方QQ群
连续签到30天
游戏蛮牛给予质量较高、影响力较大的unity相关技术开发者的荣誉称号}

我要回帖

更多关于 unity2d碰撞检测 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信