unity3d物体爆炸效果怎么做

jessiezwt2022-10-04 11:39:541条回答

unity3d物体爆炸效果怎么做
我打算先做一个爆炸粒子的prefab,然后当建筑物collider enter时实例化prefab,然后建筑物自身爆炸.
现在有几个问题.
1、建筑物带Rigidbody ,collider enter的话建筑物碰到地面也算是碰撞,炮弹不用发射,建筑物一碰地就爆炸了……
2、物体爆炸如果直接Destroy的话就很假了,突然消失.难道要从3Ds Max制作完爆炸效果再导入进来?那样的话那么多建筑物要一个一个加动画?
顺便问下角色使用RigidBody(不想用自带的3rd Charactor Controler,很不方便)后去撞墙,结果把自己撞飞了,阻力和重量都很大了,还是会有点倾斜.还有制作跳跃功能时瞬间跳起来然后慢慢降下去,感觉好假,怎样在跳的时候设置速度,让它慢慢的跳起来?
请认真回答,不要从网上复制,因为网上没有这方面的解答,免得答非所问.还有不懂这方面的请路过,不要为了2分随便写几句.

已提交,审核后显示!提交回复

共1条回复
lonereleven 共回答了16个问题 | 采纳率87.5%
1.你每次碰撞的时候检测下碰撞对象,比如tag和name,然后再产生爆炸物,还有,你检测碰撞的代码最好放在子弹上.
2.爆炸用引擎自带的粒子系统做,那样最方便,不过你得有爆炸的图片才行,粒子系统支持图片的拆分,也就是说你可以在一张图片上将动画的各个帧以矩阵排列,然后每个粒子片都可以有动画的效果.
3.你可以用脚本自定义角色的控制方式,角色碰撞用Charactor Controller(其他不适用于人物,除非你能自己写脚本控制的好),去看看引擎相关这个的介绍就行了.
1年前

相关推荐

unity3d 中如何让一个物体一端固定,另一端随另一物体运动,就像弹簧一样
wkc69881年前1
jxk706010708 共回答了10个问题 | 采纳率110%
首先在3d软件里把物体的pivot point(不知道怎么翻译 就是缩小扩大的原点)改到物体的一端,
Vector3 direction = target-transform.position;
x05x05direction.y = 0;
x05x05transform.rotation = Quaternion.Slerp(transform.rotation,Quaternion.LookRotation(direction),Time.deltaTime*40);
x05x05transform.eulerAngles = new Vector3(0,transform.eulerAngles.y,0);
上边这段代码 是我用过的 改变物体rotation的代码,target就是你说的跟随的另一个物体.然后就是改变物体的scale了,根据物体的本身长度 和离目标物体的距离的比例 来决定扩大或缩小的比率.
这是我想的 没实践,你可以试试.
unity3D中的粒子是什么意思啊
kgdjewgij1年前3
英ii猪 共回答了14个问题 | 采纳率100%
粒子就好像水这种东西,他是由一滴滴的小水珠组成的一个整体.用粒子可以制作出水、烟雾、火等特效
unity3D特效跟随物体运动我想要一个特效跟随物体运动,我用碰撞检测来特效实例化,然后用这个实例特效跟随物体运用,下面
unity3D特效跟随物体运动
我想要一个特效跟随物体运动,我用碰撞检测来特效实例化,然后用这个实例特效跟随物体运用,
下面一点是我的码只能实例特效并在物体碰撞的时候产生(并不跟随物体运动),
x05Planee = GameObject.Find("Plane1");
x05x05Instantiate (statelight,Planee.transform.position,Planee.transform.rotation);
x05x05statelight.transform.parent = Planee.transform;
然后我在UPDATE里面 加上下面的一句一运行 很多警告,而且效果也不跟随物体运动,就直接显示在物体最开始的那个位置,我移动物体它也不跟随的.
statelight.transform.position = Planee.transform.position;
柳浪声声1年前2
gfjtyik 共回答了9个问题 | 采纳率100%
statelight是你要实例的物体么?
这个物体不能直接控制,而要用一个变量保存,比如在声明一个全局变量
GameObject sLight;
然后在碰撞时
sLight= Instantiate (statelight,Planee.transform.position,Planee.transform.rotation) as GameObject;
之后再update中再设置这个sLight.
关于Unity3D的向量坐标计算问题,四元数和向量相乘?
关于Unity3D的向量坐标计算问题,四元数和向量相乘?
Quaternion.Euler(0,90,0)*Vector3(0.0,0.0,-10)
为什么可以得出一个以原点为中心,距离原点10单位,绕y轴旋转90度的新向量?
kissinger0oo1年前1
duoliaren 共回答了17个问题 | 采纳率100%
Quaternion.Euler(x,y,z) 返回一个绕x轴旋转x度再绕y轴旋转y度再绕z轴旋转z度的Quaternion,因此Quaternion.Euler(0,90,0)返回一个绕y轴旋转90度的旋转操作.
Quaternion作用于Vector3的右乘操作(*)返回一个将向量做旋转操作后的向量.
因此Quaternion.Euler(0,90,0)*Vector3(0.0,0.0,-10)表示将向量Vector3(0.0,0.0,-10)做绕y轴90度旋转后的结果.因该等于Vector3(-10,0,0).
unity3d C# 关于随机点产生随机物体问题.
unity3d C# 关于随机点产生随机物体问题.
void Start () {
p1 = new Vector3 (-2.5f,0.8f,-0.01f);
p2 = new Vector3 (-2.5f,0.4f,-0.01f);
p3 = new Vector3 (-2.5f,-0f,-0.01f);
p4 = new Vector3 (-2.5f,-0.4f,-0.01f);
p5 = new Vector3 (-2.5f,-0.8f,-0.01f);
p6 = new Vector3 (2.5f,0.8f,-0.01f);
p7 = new Vector3 (2.5f,0.4f,-0.01f);
p8 = new Vector3 (2.5f,0f,-0.01f);
p9 = new Vector3 (2.5f,-0.4f,-0.01f);
p10 = new Vector3 (2.5f,-0.8f,-0.01f);
}
void Update () {
i = Random.Range(1,6);
AddDians();
CreateFish();
CreateFish2();
CreateFish3();
CreateFish4();
CreateFish5();
void CreateFish(){
if(i == 1){
GameObject yu = (GameObject) Instantiate(_yu[Random.Range(0,5)],_point[Random.Range(0,5)],Quaternion.identity);
GameObject yu2 = (GameObject)Instantiate(_yu[Random.Range(6,_yu.Count)],_point[Random.Range(6,_point.Count)],Quaternion.identity);
iTween.MoveTo(yu,iTween.Hash("x",2.5,"time",4,"EaseType","Linear"));
iTween.MoveTo(yu2,iTween.Hash("x",-2.5,"time",4,"EaseType","Linear"));
}
}
void CreateFish2(){
if(i == 2){
GameObject yu = (GameObject)Instantiate(_yu[Random.Range(0,5)],_point[Random.Range(0,5)],Quaternion.identity);
GameObject yu2 = (GameObject)Instantiate(_yu[Random.Range(6,_yu.Count)],_point[Random.Range(6,_point.Count)],Quaternion.identity);
iTween.MoveTo(yu,iTween.Hash("x",2.5,"time",4,"EaseType","Linear"));
iTween.MoveTo(yu2,iTween.Hash("x",-2.5,"time",4,"EaseType","Linear"));
}
}
void CreateFish3(){
if(i == 3){
GameObject yu = (GameObject)Instantiate(_yu[Random.Range(0,5)],_point[Random.Range(0,5)],Quaternion.identity);
GameObject yu2 = (GameObject)Instantiate(_yu[Random.Range(6,_yu.Count)],_point[Random.Range(6,_point.Count)],Quaternion.identity);
iTween.MoveTo(yu,iTween.Hash("x",2.5,"time",4,"EaseType","Linear"));
iTween.MoveTo(yu2,iTween.Hash("x",-2.5,"time",4,"EaseType","Linear"));
curTime = 0;
}
}
void CreateFish4(){
if(i == 4){
GameObject yu = (GameObject)Instantiate(_yu[Random.Range(0,5)],_point[Random.Range(0,5)],Quaternion.identity);
GameObject yu2 = (GameObject)Instantiate(_yu[Random.Range(6,_yu.Count)],_point[Random.Range(6,_point.Count)],Quaternion.identity);
iTween.MoveTo(yu,iTween.Hash("x",2.5,"time",4,"EaseType","Linear"));
iTween.MoveTo(yu2,iTween.Hash("x",-2.5,"time",4,"EaseType","Linear"));
}
}
void CreateFish5(){
if(i == 5){
GameObject yu = (GameObject)Instantiate(_yu[Random.Range(0,5)],_point[Random.Range(0,5)],Quaternion.identity);
GameObject yu2 = (GameObject)Instantiate(_yu[Random.Range(6,_yu.Count)],_point[Random.Range(6,_point.Count)],Quaternion.identity);
iTween.MoveTo(yu,iTween.Hash("x",2.5,"time",4,"EaseType","Linear"));
iTween.MoveTo(yu2,iTween.Hash("x",-2.5,"time",4,"EaseType","Linear"));
}
}
关于创建yu和yu2,是因为物体需要从两个方向过来,所以左面的物体从左面产生,右面的物体从右面产生.
现在的问题是,有一部分的物体从(0,0,0)产生.
而且物体是翻转的.
didiliang1年前1
太多爱cc 共回答了18个问题 | 采纳率88.9%
为什么你提问了两个同样的问题...难道是为了再采纳我一次?- -!
unity3d中c#脚本怎么检测碰撞力的大小?
九月树11年前1
黑参 共回答了19个问题 | 采纳率84.2%
igidbody.velocity 即刚体速度V
rigidbody.mass 即刚体质量M
不考虑阻力的话 F=MV/T,T为力F的作用时间
unity3d怎么给旋转上升的楼梯增加碰撞器?
unity3d怎么给旋转上升的楼梯增加碰撞器?
因为楼梯是3dmax里面那种标准件,外部基本是圆柱形,旋转上升,台阶都是扇形的.
但是发现没有Cylinder Collider这种东西.如果用胶囊或者box Collider的话感觉没法很好实现那种上台阶效果,新手求解答T^T

就类似这种的,想让角色能一个一个台阶跳上
去,

百度的积分之前都给出去了,只有这么多了T^T
不知道为啥百度不给我显示你的回答,只能在手机短信上看你的回复然后这样回复你了,求问Mesh碰撞怎么产生作用呢?我添加了刚体和Mesh Collider但是感觉完全没用的样子,东西是高于地面的,但还是一运行东西就掉到地下了,T^T
如果百度能显示出你的答案的话我一定想办法给你悬赏~而且这两天又挣了一些分~
葱样年华1年前1
wtp220 共回答了17个问题 | 采纳率94.1%
无规则的可以用meshcollider,只是这个比较耗,不过看你上面的图,貌似面数也不多,试试吧,如果感觉影响性能,就用box拼
Unity3d 如何用按钮控制物体前后左右移动?
Unity3d 如何用按钮控制物体前后左右移动?
JS的
吹dd不dd1年前1
风影1977 共回答了16个问题 | 采纳率75%
public var target:Transform;
public var moveSpeed=1;
function Start(){
x05
x05if(!target){
x05x05print("not set target!");
x05x05
x05x05var go=GameObject.CreatePrimitive( PrimitiveType.Cube);
x05x05target=go.transform;
x05x05target.position=Camera.main.transform.TransformPoint(Vector3(0,0,5));
x05x05target.rotation=Camera.main.transform.rotation;
x05x05
x05}
x05
}
function OnGUI(){
x05var width=60;
x05var height=20;
x05GUI.BeginGroup(Rect((Screen.width-width*2)/2,Screen.height-height*3,width*2,height*3));
x05var moveDirection=Vector3.zero;
x05if(GUI.Button(Rect(width/2,0,width,height),"forward")){
x05 x05moveDirection.z=1;
x05}
x05if(GUI.Button(Rect(width/2,height*2,width,height),"back")){
x05x05moveDirection.z=-1;
x05}
x05if(GUI.Button(Rect(0,height,width,height),"left")){
x05x05moveDirection.x=-1;
x05}
x05if(GUI.Button(Rect(width,height,width,height),"right")){
x05x05moveDirection.x=1;
x05}
x05if(target){
x05x05moveDirection=moveDirection*moveSpeed;
x05x05target.position=target.position+ target.rotation*moveDirection;
x05
x05}
x05GUI.EndGroup();
x05
x05
x05
}
unity3d c# 的代码错误
unity3d c# 的代码错误
Dictionary openWith0 = new Dictionary();//定义字典
Dictionary openWith1 = new Dictionary();//定义字典
openWith0.Add(0, "0,500,1000,1500,2000,3500,4500,6500,7500,8500,10000,14000,15000,16000,18000,19000,21000".Split(','));
openWith1.Add(0, "1,2,3".Split(','));
for (int i = 0;i < openWith0[0].Length;i++)
{
for (int j = 0;j < openWith1[openWith0[0][i]].Length;j++)//就是这行报错
{
if (j == 0)
{
Instantiate(m1,new Vector3 (Random.Range(200,300), Random.Range(-800,-700),0),transform.rotation);
}
}
}
报错:
Assets/script/gamelogic.cs(55,44): error CS1502: The best overloaded method match for `System.Collections.Generic.Dictionary.this[int]' has some invalid arguments
Assets/script/gamelogic.cs(55,44): error CS1503: Argument `#1' cannot convert `string' expression to type `int'
傻傻的俪1年前1
田宝贝 共回答了16个问题 | 采纳率81.3%
openWith1 的key是int型的,
openWith0[0][i] 得到的是字符串
用unity3d的第一人称控制器会一直往下掉,是在地面之上的
佑醒一生1年前1
沙漠里的海带丝 共回答了21个问题 | 采纳率95.2%
地形的isTrigger取消下看看
UNITY3D中的Rect()里面的坐标(x,y,w,h)这个X,Y是X轴和Y轴的坐标吗?
黑sir1年前0
共回答了个问题 | 采纳率
如何控制,unity3d垂直光线的作用域?
如何控制,unity3d垂直光线的作用域?
例如新建directional光线,希望它在 画面的某区域 (x,y w,h)有作用.其他区域不用它管.
rujinqiu1年前1
alexlee660839 共回答了28个问题 | 采纳率89.3%
这个恐怕不行,directional光线是ping平行光,用来模仿太阳光的,所有场景都会在范围内的.
你可以试试看用别的光源的,能做你所说的效果.就像是arealight就可以实现了.
(当然 ,范围,颜色什么的需要手动设置的,这个我想你已经知道了.)
新手自学Unity3D,如果回答有误,请见谅啊.
unity3d问题transform.rigidbody.centerOfMass = new Vector3(0,-1
unity3d问题
transform.rigidbody.centerOfMass = new Vector3(0,-1.5f,0);
transform.rigidbody.centerOfMass.y = -1.5f;
这两句为什么第二句是错的呢,说
错误 15 无法修改“UnityEngine.Rigidbody.centerOfMass”的返回值,因为它不是变量
皮皮gg贝1年前1
海边的小溪 共回答了11个问题 | 采纳率72.7%
因为Vector3是一个值类型,所以getter返回的是centerOfMass的拷贝,如果编译器不报错的话,
transform.rigidbody.centerOfMass.y = -1.5f只会修改拷贝的值,而不是centerOfMass本身的值,显然这不是你想要的结果,所以编译器就直接报错了,告诉你如果要赋值的话就使用第一种写法。
unity3d的空物体叫什么
yaouanze1年前1
alan_kai 共回答了21个问题 | 采纳率95.2%
在Hierarchy窗口,按快捷键Ctrl+N,就出现一个空物件GameObject
unity3D 如何销毁上一个被碰撞的物体
unity3D 如何销毁上一个被碰撞的物体
比如下楼梯,我想实现 每下一层楼梯,则销毁上一层楼梯.在unity3d里用java怎么写呢?
喝白开水的YY1年前1
凶铃陪你看月亮 共回答了15个问题 | 采纳率73.3%
楼梯由n个台阶组成,当某个台阶的高度大于人物的高度,则销毁它.