假期考虑良久决定制作一期塔防游戏 ,这类游戏重要点有:塔的范围监测,子弹的最短距离enemy选择,还有就是enem的运动轨迹编辑。
这一期先实现enemy的路径,首先制作一张background,例如这个:
我要说的就是如何让怪沿着这个路线走到终点。
可以使用PathNode存入数组然后逐步实现的方式,我要说的是使用ITweenPath来实现它。
在Unity官网上下载ITweenPath插件,导进场景中,设置完毕后在模型上加一个ITweenPath(Script),编写一个名为Enemy的C#脚本也挂在下面,具体代码如下:
using UnityEngine;
using System.Collections;
public class Enemy : MonoBehaviour
{
public float HP = 10;
public Vector3 target = new Vector3 (0.5f, -0.35f, 0);
public GameObject obj;
public float speed=0.15f;
public float HPvalue;
void Start ()
{
var paths = obj.GetComponent<iTweenPath> ().GetPath ("mypath");//调去自身组件并找到起始node
Hashtable args = new Hashtable ();//利用哈希表添加各项属性
args.Add ("path", paths);
args.Add ("easeType", iTween.EaseType.linear);
args.Add ("speed", speed);
iTween.MoveTo (gameObject, args);//让gameobject沿着paths用speed做Type.liner运动
}
void Update ()
{
iTween stop = GetComponent<iTween> ();
if (FindObjectOfType<Middlestop> ().stop == true)
{
stop.isRunning = false;
}
else
{
stop.isRunning=true;//上面两端是调用自身的布尔判断来实现暂停功能
}
if (obj.transform.position == target)
{
Destroy (obj.gameObject);
Application.LoadLevel ("TryAgain");
}
}
写好代码之后效果如下:
右边第一个打勾的意思是:是否在编辑状态下显示路径,第二个则是一个node数组,为使运动速度匀速,我设置了25个,用来保证整体speed的匀速。
最后,当怪物到达终点也就是最后一点,Destory自己就可以了。
新手上路多有不足,欢迎各位讨论和补充。