之前已经3中病毒的各自运动轨迹,接下来我们就来看看道具的实现。
首先这边简单的先罗列了一下:
那我们就可以先配表了
那我们先看看盾的效果:盾的施法对象肯定是自己,然后作用就是把病毒挡在外面;
接下来就是盾的实现部分;
首先我们还是要先创建道具,先看效果:
这里创建方法同之前病毒的创建方法一样(没有美术,先简单的代替效果)。
接下来就来实现道具的效果,首先道具应该都有一个生命周期,顺便验证一下之前的对象池。
从之前的配置看到我配的生命周期是5,也就是说5秒后会因隐藏,然后创建新的盾时,还会显示,我们用测试代码演示一下。
for (int i = (int)ItemDefine.ItemType.Shield; i <= (int)ItemDefine.ItemType.Track; i++)
{
//test i == 1
var itemData = GetItemByType(1);
if (itemData != null)
{
var pos = GetRandomPosInBoard(itemData.Radius);
var itemObj = CreateItem(itemData, pos);
}
}
从hierarchy视图可以看到一开始生成了4个盾,然后隐藏,又生成了5个盾,从而也验证了我们之前的对象池。
player和道具触碰的时候会产生特效的同时也会消失,这时我们就得加个判断条件,是否接触了主角:
/// <summary>
/// 是否出票主角
/// 不同于到达目标点,触碰有半径范围
/// </summary>
/// <returns></returns>
protected bool IsTouchPlayer()
{
float length = _itemData.Radius + _playerRadius;
Vector3 playerPos = _PlayerTrans.position;
return Mathf.Abs(_transform.position.x - playerPos.x) < length &&
Mathf.Abs(_transform.position.y - playerPos.y) < length;
}
当条件达到时,我们就可以处理对应的效果了。
今天就到这了,明天还得加个表把触发后的效果以及对病毒的影响都给串联起来。
传送门:独立游戏开发–索引