本文主要是介绍4.7敌人,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
敌人有各种,那么我们首先创建一种,让其他的敌人种类直接继承前者,再针对实际情况略加修改。
using UnityEngine;
using System.Collections;public class Enemy : MonoBehaviour {// 当前路点public PathNode m_currentNode;public float m_speed = 2;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {RotateTo();MoveTo();}// 旋转向目标public void RotateTo(){float current = this.transform.eulerAngles.y; // 获得当前y轴方向this.transform.LookAt(m_currentNode.transform); // 使用LookAt方向转向目标,因此获得了最终角度// 使用Mathf.MoveTowardsAngle方法获得转由当前y轴转到最终角度的中间值float next = Mathf.MoveTowardsAngle(current, this.transform.eulerAngles.y, 120 * Time.deltaTime);this.transform.eulerAngles = new Vector3(0, next, 0);}public void MoveTo() // 向目标方向移动{/*MoveTo函数则使敌人沿着当前方向前进,当距离目标路点较近时,该路点作为当前路点,再向下一个路点前进。*/Vector3 pos1 = this.transform.position;Vector3 pos2 = m_currentNode.transform.position;float dist = Vector2.Distance(new Vector2(pos1.x, pos1.z), new Vector2(pos2.x, pos2.z));if(dist < 1.0f){if(m_currentNode.m_next == null) // 如果到达我方基地{GameManager.Instance.SetDamage(1);// ahuiDestroyMe();}elsem_currentNode = m_currentNode.m_next;}this.transform.Translate(new Vector3(0, 0, m_speed * Time.deltaTime));}public void DestroyMe(){//ahuiDestroy(this.gameObject);}
}
在Unity中,如果不是追求特别复杂的动画效果,我们可以使用Unity中原始的动画播放功能。在带有动画的模型,默认呢被导入到Unity中的时候,会自动设置为Generic,这是一种适配Mecanim动画系统的模式,我们要将他转为Legacy模型。例如:一个跑步动画,bird@run,@后面的run即是动画的名称,这是Unity对动画文件定义的一种命名规则。
接下来是另外一种敌人
using UnityEngine;
using System.Collections;public class AirEnemy : Enemy {// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {RotateTo();MoveTo();Fly();}void Fly() // 当高度小于2的时候向上飞行{float flyspeed = 0;if(this.transform.position.y < 2.0f)flyspeed = 1.0f;this.transform.Translate(new Vector3(0, flyspeed * Time.deltaTime, 0));}
}
这篇关于4.7敌人的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!