摄像头跟随hero移动:
public Transform hero;
private Vector3 vec;
void Start()
{
vec = transform.position - hero.position;
}
void Update()
{
transform.position = vec + hero.position;
}
鼠标点击hero移动:
public Animator anim;
public NavMeshAgent naver;
void Update()
{
if (Input.GetMouseButton(0)) { //判断鼠标点击(左键)
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //把鼠标点击的位置转化成射线
RaycastHit hit; //保存碰撞信息
/*
public static bool Raycast(Ray ray, out RaycastHit hitInfo, float maxDistance);
ray:射线结构体的信息,包括起点,方向;也就是一条射线
hitinfo:这条射线所碰撞物体的相关信息;
maxDistance:这条射线的最大距离;
以射线ray经过的maxDistance长度之内,与第一个对象进行的物理碰撞的信息,存储在hitInfo中;如果有碰撞物体,返回true, 反之false;
*/
if (Physics.Raycast(ray, out hit)) { //射线发生碰撞输出碰撞信息
naver.SetDestination(hit.point); //移动到碰撞位置(导航到目标点)
}
}
anim.SetFloat("speed", naver.velocity.magnitude); //速度与动画speed同步
/*
Animator. SetFloat(string name, float value);
name 该参数的名称。
value 该参数的新值。
*/
}
物体碰撞:
/*
//有刚体才可以发生碰撞
private void OnCollisionEnter(Collision collision) //unity自动调用,碰撞时调用
{
Debug.Log("come on");
Debug.Log(collision.collider); //用collider获取碰撞体的信息
Debug.Log(collision.collider.name);
Debug.Log(collision.collider.tag);
}
private void OnCollisionExit(Collision collision)
{
Debug.Log("exit");
}
private void OnCollisionStay(Collision collision)
{
Debug.Log("stay");
}
*/
private void OnTriggerEnter(Collider other) //触发检测
{
Debug.Log("triggerender"+other.name+" "+other.tag); //获取触发体的信息
}
移动炮台(左右移动,点击发射):
public float speed = 10;
public float move = 3;
public GameObject bellet;
void Update()
{
if (Input.GetMouseButtonDown(0)) //鼠标点击
{
GameObject b=GameObject.Instantiate(bellet,transform.position,transform.rotation); //instantiate创建有返回值返回一个gameobject
//要复制的物体名,代码物体的坐标,代码物体的旋转//这个函数有五个重载类型
Rigidbody rig= b.GetComponent<Rigidbody>(); //获取组件的方法GetComponent
rig.velocity = transform.forward * speed;
}
float h = Input.GetAxis("Horizontal"); //(水平) //获取方向键数值(从0到1/-1再到0(按一下变化1))
float v = Input.GetAxis("Vertical"); //(垂直)
transform.Translate(new Vector3(h, v, 0) * Time.deltaTime * move);//帧间隔(1秒/每秒帧数)一帧执行一次*帧间隔=1秒(把变化压缩到1秒)(一秒变化1*move)
//本代码物体运动方法- x,y,z坐标
}