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);
    }
   
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值