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

尝试的第一个方法,直接做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的代码都不管用?还是光这个代码还不够?请问有大神知道怎么解决我的问题吗?如果能是做来回锤的动态那就更好了,不过主要的问题是:怎么让有刚体的物体在动态中互相碰撞?