今天一样还是做这个小项目,算了,废话不多说了,我还是来说一下今天在项目中遇到的问题,还有用到的技术吧。
1、首先就是怪物的死亡掉落了
这个刚改的时候比较伤脑筋,因为要让怪物血量到0的时候有个死亡的动画,然后等动画结束时候后再销毁,所以我用的是销毁中的参数,因为我的掉落物品是在销毁的那里写,所以要写在血量为0的时候,但是因为那个销毁的原因,这一段的代码会在Update当中被调用好多次,所以我想到了不用那个参数,改用倒计时销毁了,当到时见的时候调用一次直接销毁,并且克隆想要的东西,然后改变标志位,止痒就只会执行一次了。
2、第二个就是物品克隆时的随机生成了,让它只有一定的几率掉落产生掉落
我第一时间想到是随机Random.Range,因为可以只随机整数,而且有范围,然后取出其中的一个作为判断,就是判断这个随机数是不是这个数,这样不就是具备了分母和分子特性,只要把克隆写在判断里面,这样就是一个随机生成了。
前两点我的代码:
if (lifeTime == 0) //当生命为0的时候销毁该物体
{
if (this.dietime < 0) //倒计时,血量到0的时候有多长时间了
{
int a = Random.Range(0, 3); //随机生成0到3的一个数,赋值给a,这个可以有1/3的几率的到其中的一个数,所以这个随机率就是1/3
if (a >= 1) //和上面那句一样,用来随机的
{
GameObject go = Instantiate(money, transform.position, Quaternion.identity) as GameObject;
//克隆掉落的物品,至于里面的参数就请看看我以前关于克隆的日志吧,里面于详细的介绍哦!!
}
this.dietime = 1.0f; //计时器嘛,既然都结束了,当然要恢复原来的值了
Destroy(this.gameObject); //这个就是销毁了,既然物品都出来了,这个也可以消失了
}
dietime = dietime - Time.deltaTime; //计时器,你应该懂得,我以前好几篇日志都提到了用法
}
3、剩下的就是拾起掉落了
要像一个游戏,就必须要走到掉落我物品的掉落地点之后再消失,所致刚开始就谢了一个触发销毁,当主角触碰那个掉落的时候就销毁它,但是在运行的时候除了点问题,因为掉落就是怪物死亡的地方,所以我还没看见呢就销毁了,我已我就想到了通过一个按键什么来控制,所以我在判断触发物体是什么的那里多写了一个条件,就是判断是否我按下了键,但是还有除了点问题,运行的时候没有销毁,看了好多遍我才发现,因为习惯我吧判断写在了 OnTriggerEnter 方法里了,这样就没办法在判断我是否按键了,除非我的人品逆天,不然不可能在同一帧被调用的,所以换成了 OnTriggerStay, 这样就可以按下的时候销毁了。
我的代码:
void OnTriggerStay(Collider co) //判断是否有物体触碰到了我
{
if (co.tag == "money"){ //然后事判断这个物体是不是我想要的,这里用的标签判断
if (Input.GetKey(KeyCode.F)) //然后就是判断是否按到了拾取键
{
Destroy(co.gameObject); //好了,连个都满足了还等什么,销毁掉吧
}
}}
今天也就这样度过了,哎,感觉越做越无力了,查了好多,希望明天我能够解决立体任务名字和血条以及特效的附加吧,洗洗睡了
zZZ
