unity 敌人朝向主角

    //获得enemy到player的向量
    Vector3 dir=playe.position - enemy.transform.position;
    //y 高度保持不变
    dir.y = 0;
    //四元数插值运算
    enemy.transform.rotation=Quaternion.Slerp(enemy.transform.rotation,Quaternion.LookRotation(dir),0.3f);

在这里插入图片描述

public class PlayerController : MonoBehaviour
{
    private Camera mainCamera;
    private Rigidbody rigidbody;
    private Vector3 distance;
    void Start()
    {
        rigidbody = this.GetComponent<Rigidbody>();
        mainCamera = Camera.main;
        distance =transform.position- mainCamera.transform.position;
        Debug.Log(distance);
    }

    void Update()
    {
        float v = Input.GetAxis("Vertical");//垂直z轴
        float h = Input.GetAxis("Horizontal");//水平x 轴
        Vector3 dir = new Vector3(h, 0, v);
        if (dir!=Vector3.zero)
        {
            //拟物体的物理状态,比如物体受重力影响,物体被碰撞后的击飞等等。对于运动学刚体
            //它基于刚体的运动应用摩擦力。这个让你模拟刚体位于移动平台之上的情况
            rigidbody.MovePosition(transform.position + dir * Time.deltaTime * 5);
            //旋转
            this.transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(dir), Time.deltaTime * 15);
           
        }
        //播放动画
       
    }

  


//相机跟随


public class CameraMove : MonoBehaviour 
{
    public Transform player; // 主角位置
    private float speed = 15f; // 相机速度   
    Vector3 distance; // 主角和摄像机之间的距离                   


    void Start()
    {
        player = GameObject.FindGameObjectWithTag("Player").transform;
       // 计算人物与摄像机之间的向量
       // 用当前摄像机的坐标 - 玩家的坐标(可以画一张图来算一算)
       distance = transform.position - player.position;
    }


    void FixedUpdate()
    {
        // 摄像机应该在的位置
        // 不直接赋值给当前摄像机的原因是,需要这个参数来实现一个延迟功能
        Vector3 targetCamPos = player.position + distance;
        // 给摄像机移动到应该在的位置的过程中加上延迟效果
        transform.position = Vector3.Lerp(transform.position, targetCamPos, speed * Time.deltaTime);
    }
   

版权声明:本文为weixin_33950757原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。