该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这问题已经完美解决啦
方法很简单,首先在车的onCollisionEnter里
#pragma strict
private var car : PlayerCar;
car = transform.GetComponent(PlayerCar);
function OnCollisionEnter(collInfo : Collision) {
if(enabled && collInfo.contacts.Length > 0) {
var volumeFactor : float = Mathf.Clamp01(collInfo.relativeVelocity.magnitude * 0.08);
volumeFactor *= Mathf.Clamp01(0.3 + Mathf.Abs(Vector3.Dot(collInfo.relativeVelocity.normalized, collInfo.contacts[0].normal)));
volumeFactor = volumeFactor * 0.5 + 0.5;
}
if ((collInfo.gameObject.tag == "BOX"){
collInfo.gameObject.SetActive(false);
}
}
其中后面部分是碰撞的系数,我随便引用的另外一个赛车里的游戏
然后箱子用名字为BOX的tag来标记
首先确认碰撞,然后确认是否是BOX
这样最终的效果就是如果碰撞中碰到了BOX的话,会有明显的停顿以及减速,然后撞毁BOX
这并不是完结
这时候BOX并不能重生,但是setActive(true)不能写进车的js里面,因为并不会起效果
这时候可以再BOX里面添加一段JS
function Start () {
InvokeRepeating("Respawn", 1,5);
}
function Respawn() {
gameObject.SetActive(true);
}
这时候BOX每5秒就会setActive一次true
当然如果想更节省内存还可以用if来检测是否是隐藏状态,
不过这里我暂时没写,问题基本到这里就结束啦,完美解决了,而且完美达到了我想要的效果,很感谢大家