unity怎么设置两球相撞时,unity旋转到指定角度的球消失

注册花火通行证,没有账号
智能硬件分类
&>&&>& > 正文
分享文章到微信
关注花火网微信公众号
  1、如图,我们已经给小球添加了移动的脚本,小球是Sphere,现在想实现的是让摄像机MainCamera跟随小球一起运动。  2、我们先来看看上面说的不可行的方法:如图,直接将&Main &Camera&拖动到&Sphere&的子目录,即让摄像机成为小球的子物体,这样,两个对象就可以一起运动了,那么我们来看看到底可不可行。  3、我们记录一开始两物体的位置,此时让小球向右移动,此时,我们从这个视角看去,的确是一起运动了,但是,这不是我们在游戏里面看到得视角,我们看到的是摄像机的视角。  4、运行游戏后,我们可以看到,画面是&天旋地转&的。所以,这种方法对于自身还在运动的物体来时,是不可行的。那么下来我们说说正确的做法。  正确的方法:  1、 &我们要实现的是让相机跟随物体一起移动,其实就是让相机和小球的相对位置不变即可。这里我们需要使用代码来控制两个对象之间的相对位置,使其保持不变。  首先,在MainCamera里面创建一个C# 脚本。如图所示,点击MainCamera,在右边属性栏最下方,选择 &AddComponent。然后,在弹出的选项里拉到最下方,选择NewScript,然后创建一个C#脚本,命名为 &Move。此时可以看到,我们新添加的一个C#脚本。 &
加载更多新闻
Copyright @
HUAHUO.COM, All Rights Reserved. 版权所有 花火网Unity用C#开发祖玛游戏,在两球中插入一球,两球往两边走,且不被撞非有什么好的算法和具体实现方法_百度知道
Unity用C#开发祖玛游戏,在两球中插入一球,两球往两边走,且不被撞非有什么好的算法和具体实现方法
谢谢大神~,在两球中插入一球,两球往两边走,且不被撞非有什么好的算法和具体实现方法用C#开发VR版祖玛游戏
我有更好的答案
每个球都有实际位置和目标位置,目标位置会瞬间改变,实际位置始终都在Lerp到目标位置,一坨代码负责根据目标位置实时更新实际位置,另一坨代码计算目标位置,就这么简单。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。unity中怎么设置:在多个物体共用一张贴图时。改其中一个物体的材质 ,其他物体不被更改的效果影响。_百度知道
unity中怎么设置:在多个物体共用一张贴图时。改其中一个物体的材质 ,其他物体不被更改的效果影响。
我有更好的答案
unity中多个物体共用一张贴图的情况可以分为以下2种:1、 物体A——
物体B —— 材质A —— 贴图A
物体C —— 此时所有物体共用一个材质球,你随便改其中任一物体的材质都会影响到其他所有使用这个材质的物体; 2、物体A —— 材质A
物体B —— 材质B —— 贴图A
物体C —— 材质C此时每个物体有一个自己的材质球,你随便改其中任一物体的材质都不会影响到其他的物体;
采纳率:91%
材质球不共用就行
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。一个有贴图的模型物体,在Unity5中如何让它透明,并且有阴影
可以制作一个透明的材质,给物体附上就可以了。unity 的阴影是更具 Mesh 来计算的~~~
@ 我是说在材质编辑器里如何设置?我现在透明有了,就是没阴影!Rendering Mode里选了Transparent,然后Main Maps的颜色设置里的阿尔法通道选项滑动到中间,有了透明效果了。
Unity5.0 渲染系统介绍程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity2D研究院之精灵Sprite之间的碰撞事件(三)
Unity2D研究院之精灵Sprite之间的碰撞事件(三)
围观70303次
编辑日期: 字体:
碰撞我个人觉得可以分为两大类: 比较物理的碰撞,和不太物理的碰撞。
比较物理的碰撞:比如奋斗的小鸟这种游戏,小鸟飞出去后会根据自己的速度还有重力碰到障碍物后可能会被弹回来。
不太物理的碰撞:比如超级玛丽这种游戏,无论玛丽以多块的加速度向前跑碰到了障碍物,玛丽并不会被弹回来。
那么这篇文章我主要想写写 不太物理的碰撞,想一想以前的2D游戏是怎么做的?
场景层:场景编辑器来生成一个庞大的二维数组,每一个数字代表一个含义,比如0-9表示不同的tile(小图)。整个游戏场景都是根据二维数组用双for循环绘制出来的。
物理层:再来一个和上面一样的二位数组,比如0表示可以通过,1表示不可以通过,也就是碰撞层。 策划在编辑器里面来编辑所有的物理层。
有可能还会在有两个相同的二维数组, 前景层 后景层。。。就不赘述了。。 最后用代码去检测人物是否能继续前进,或者被碰撞。
结合到unity3d里面,现在还能这么搞吗?答案:当然能这么搞了,只是unity给我们提供了新的方案,检测碰撞的这一部分可以不用我们自己写代码了。。
二维数组似乎有点麻烦,我们把问题简化一下。如下图所示,红色区域表示小鱼不可行走区域。我相信刚开始学unity2d的人首先想到的就是transfom.postion 来给小鱼赋值, 在Update里面来检查是否碰撞,因为我也是这么想的。
算法说难也不难,有轮子为什么我们不用呢?在处理位置的时候我们使用rigidbody2D.MovePosition()这个方法。另外记得要给精灵添加一个Rigidbody2D的组件。
1234567891011121314151617
using UnityEngine;using System.Collections;public class FishCommon : MonoBehaviour { void Update () {
//手指 或者 鼠标的坐标传进去
Move(Input.mousePosition); } public void Move(Vector3 postions){
//在这里进行坐标的换算
rigidbody2D.MovePosition(ScreenToWorld(postions)); } private Vector2 ScreenToWorld(Vector3 postion){
Vector3 pos =&&Camera.main.ScreenToWorldPoint(postion);
new Vector2(pos.x,pos.y); }}
如下图所示,小鱼在移动的时候,如果碰到的障碍物它就会停住。
如果需要精灵响应物理碰撞,那么就必须添加Rigidbody2D的组件。如下图所示,我不需要 位置与旋转运动阻力,所以linear Drag 和 angular Drag 设置0。我也不需要重力所以GravityScale 也就是0.我需要固定精灵的角度所以勾选Fixed Angle 。因为我需要感应物理碰撞,所以不够选Is Kinematic 。下面依次是物理差值、休眠模式、碰撞检测。调一调参数就能看出效果。
这里我想详细的在说说 Is Kinematic 属性。既然已经需要用到物理碰撞,那么在勾选 Is Kinematic 是不是吃饱了撑了?我在做个假设?比如我现在控制小鱼在吃金币,当碰撞到金币的时候我并不希望小鱼停住。但是我程序中还想得到碰撞的这个事件,那么此时该如何? 解决这个命题之前我们要看看物理碰撞的事件。
物理碰撞的事件
这是要把碰撞的信息回调到代码中,以前物理老师讲过“力的作用是相互的”。“小鱼”碰撞“石头”也就是“石头”碰撞“小鱼”,那么Rigidbody2D组件到底是给“小鱼”加 还是给“石头”加?请记住一点,Rigidbody2D永远给需要感应物理(有位移)的对象加。
例子1:“小鱼”碰撞“石头” ,石头是要挡住小鱼的前进,那么石头永远不可能发生位移,Rigidbody2D加给小鱼。
例子2:“小鱼”要吃一个金币,但是金币被一个特殊的石头挡住了。我需要控制小鱼把这个石头挪开,因为这个石头需要发生位移,Rigidbody2D加给小鱼,并且加给石头。
例子3:“小鱼”不加Rigidbody2D 而“石头”加Rigidbody2D 这种情况应该是非常非常少见的。
回到物理的碰撞事件上,要得到精灵的碰撞事件,必须保证这两个精灵至少有一个含有Rigidbody2D组件。还是“小鱼”碰撞“石头”的例子。如下代码所示,“小鱼”和“石头”都挂上,当发生碰撞的时候都可以收到对方的信息。
using UnityEngine;using System.Collections;&public class ColliderEvent : MonoBehaviour {& void OnCollisionEnter2D(Collision2D coll) {
Debug.Log(coll.gameObject.name); }}
OnCollisionEnter2D 表示进入碰撞的事件,对应还有碰撞中、和碰撞结束的事件。 详细的就在API里面找找吧。显然这个脚本只挂在”小鱼”身上比较好,原因是可能有很多石头,只监听“小鱼”身上的就够了。
在举个例子,现在变成“小鱼”改吃 “金币”了。“小鱼”需要穿越过“金币”的碰撞区域,在回到上面我说的Rigidbody2D组件上。此时请把“小鱼”身上的 Is Kinematic 勾选上。并且把Box Collider2D上的 Is Trigger勾选。
把如下脚本挂在“小鱼”身上。
using UnityEngine;using System.Collections;&public class ColliderEvent : MonoBehaviour {& void OnTriggerEnter2D(Collider2D other) {
Debug.Log(other.name); }}
OnTriggerEnter2D 表示进入碰撞的事件,对应还有碰撞中、和碰撞结束的事件。如下图所示,“小鱼”已经可以穿过碰撞区域了。
例子4: 如果“小鱼”既要响应碰撞也要响应触发该如何?也就是说“小鱼”碰到石头会停止,但是同时碰到金币则会穿越。此时“小鱼”身上的Box Collider2D不要勾选Is Trigger,而是“金币”勾选Is Trigger即可。
1.精灵之间Game视图显示上没有碰撞表现,但代码要监听碰撞事件,那么 Is Kinematic 勾选,Is Trigger勾选、用transform.postion给坐标赋值即可。
2.精灵之间Game视图显示上要有碰撞表现,并且代码要监听碰撞事件。那么Is Kinematic 不勾选,Is Trigger不要勾选,用Rigidbody2D来给坐标赋值即可。
如果想做插值动画, 新项目的话强烈建议使用DoTween
虽然目前还是Alph版本,但是功能已经很强大的,我相信很快就有正式版本了。
最后感谢大家听我唠叨,如果有好的建议或者方法欢迎大家在下面给我留言,互相学习与进步,加油~嘿嘿。
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!

我要回帖

更多关于 unity旋转到指定角度 的文章

 

随机推荐