【新手求助】怎么让刚体物体在动态中互相碰撞?
unity吧
全部回复
仅看楼主
level 1
四夜兮草 楼主
比如说我这里有两个物体,小球和锤子。都有collider和rigidbody。
尝试的第一个方法,直接做animation让锤子动起来,结果锤子会穿过小球,rigidbody在这个情况下不管用。
想了想应该还是要用代码写,fair enough. 但是我是小白新手不知道怎么写代码,学习了点皮毛自己写没毛用。后来查到了unity官网的一个Rigidbody.MoveRotation代码:
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public Vector3 eulerAngleVelocity;
public Rigidbody rb;
void Start() {
rb = GetComponent<Rigidbody>();
}
void FixedUpdate() {
Quaternion deltaRotation = Quaternion.Euler(eulerAngleVelocity * Time.deltaTime);
rb.MoveRotation(rb.rotation * deltaRotation);
}
}
这个是锤子的信息栏。Example Class就是这个代码,加入后调整X,Y,Z就可以旋转起来。其实我是想做锤子来回锤的动作,这个代码就直接是单项旋转的动作,我也没完全搞清楚XYZ怎么控制,不过只作为个测试,先不管他。
锤子由锤头为中心转起来了...然后如图所示还是穿过了小球......
连带rigidbody的代码都不管用?还是光这个代码还不够?请问有大神知道怎么解决我的问题吗?如果能是做来回锤的动态那就更好了,不过主要的问题是:怎么让有刚体的物体在动态中互相碰撞?
2017年03月22日 16点03分 1
level 9
直接用变换的旋转就行
transform.Rotate(Vector3.right * 60 * Time.deltaTime, Space.Self);
旋转的方向 * 每秒旋转的角度 * 时间增量 , 自身坐标或世界坐标
不过,如果主要控制的是锤子的话,这么个旋转法控制可能比较困难,也可以给小球直接施加一个力来模拟小球的碰撞,方向什么的,看锤子和球的方向自己改变下向量
rigidbody.AddForce(Vector3.forward * 10);
2017年03月23日 01点03分 3
level 5
你没有做碰撞体吧!
2017年03月24日 01点03分 4
碰撞体指的是?不是collider吗?
2017年03月24日 20点03分
level 7
你这锤子的模型自带碰撞机? 如果没有自己圈两个
2017年03月25日 04点03分 5
level 1
碰撞体只是用来监测碰撞的,要加刚体组件才能发生物理碰撞效果
2017年03月25日 09点03分 6
level 6
boxcollider还是1/1/1的尺寸,调节一下碰撞器的尺寸,要覆盖整个模型,碰撞实际上就是collider之间的交互
2017年08月06日 14点08分 7
1