这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌
项目经验总结(1)
1、关于相机跟随的:
今天因为老师让我们要项目中主角是进入场景中时克隆出来,这个我感觉难点不是克隆,而是相机跟随,因为相机跟随的脚本需要拉近主角,但是我拉预设体的话相机是原地不动的。
经过试验之后,我找到了一个好办法,那就是因为主角只有一个,所以我大胆的在主角脚本里弄了个实时接收主角坐标的一个静态属性,这样既能在其他的脚本中调用这个属性,还能做到数据同步。嘿嘿,这样相机只要调用这个属性,来确定主角的位置就可以了,不再需要将对象拉近脚本中
我的代码:
public static Vector3 PlayerTransfrom;//静态函数,用来存放现在的位置的
void Update () {
PlayerTransfrom = transform.position;//讲现在的位置赋给静态函数,照相机脚本通过调用静态函数来做跟随
}
2、关于怪物死亡之后的重生
这个我是通过数组来记录怪物,然后在Update里判断数组里是否为空,为空时,倒计时开始走表,到时间时克隆该怪物。当然,因为要想的是原地克隆,所以我专门吧倒计时弄成了数组,一个倒计时对应一个怪物的克隆。不过这样有瑕疵,就是原有的东西很多都会失效,这是因为一开始是本来就有的,而克隆的只是预设体,这个没有同步,所以我就把场景里的怪全部删掉了,在脚本的start中直接克隆出第一批出来。
我的代码:(因为都是重复的,我就用数组中的一个来做实例吧)
public GameObject mus;//蘑菇的预设体
private GameObject[] mush=new GameObject [5];//蘑菇数组
Vector3 mus0;//位置存放的函数
float[] time = { 10.0f, 10.0f, 10.0f, 10.0f, 10.0f };//蘑菇重生的倒计时
void Start () {
//蘑菇的位置
mus0 = new Vector3(23.45769f, 60.02081f, 144.8808f);
//蘑菇的第一次生成
mush[0] = Instantiate(mus, mus0, Quaternion.identity) as GameObject;}
void Update () {
if (mush[0] == null) {//判断是否为空
if (time[0] < 0){//当时间小于0的时候
mush[0] = Instantiate(mus, mus0, Quaternion.identity) as GameObject;//克隆,并且赋值给数组
time[0] = 5.0f;//重置时间
}
time[0] = time[0] - Time.deltaTime;//计时器
}
}