日志2025.1.22

日志2025.1.22
1.增加了射击索敌功能
用Target脚本当做标签用,挂载到目标身上

    //被锁定的目标
    public Transform Target()
    {
        Transform target = null;

        if (GetMouseHitInfo().transform.GetComponent<Target>() != null)
        {
            target = GetMouseHitInfo().transform;
        }

        return target;
    }

    private void UpdateAimPosition()
    {
        //锁定瞄准,使打出的子弹射在target上
        Transform target = Target();
        if (target != null && isLockingToTarget) {

            if (target.GetComponent<Renderer>() != null)
            {
                //不瞄准物体在底部的轴心,而是通过Renderer瞄准其中心
                aim.position = target.GetComponent<Renderer>().bounds.center;
            }
            else aim.position = target.position;

            return;
        }

        //精确瞄准
        aim.position = GetMouseHitInfo().point;

        //非精确瞄准
        if (!isAimingPrecisly)
            aim.position = new Vector3(aim.position.x, transform.position.y + 1, aim.position.z);
    }


2.增加了武器激光射线
在武器上挂载 Line Renderer 组件,把其Lighting的设置都取消。
新建一个材质作为激光,在Shader里面选择Particles/Standard Unlit,再把Rendering Mode 改为Fade.

    [SerializeField] private LineRenderer aimLaser;

    private void UpdateAimLaser()
    {
        Vector3 startPoint = player.weapon.gunPoint.position;
        Vector3 laserDirection = player.weapon.BulletDirection();
        float laserDistance = 4.0f;

        //设置激光起点
        aimLaser.SetPosition(0, startPoint);

        Vector3 endPoint = startPoint + laserDirection * laserDistance;

        //如果激光碰到物体,则将激光终点设置为激光与物体的交点
        if(Physics.Raycast(startPoint, laserDirection,out RaycastHit hitinfo, laserDistance))
        {
            endPoint = hitinfo.point;
        }

        //设置激光终点
        aimLaser.SetPosition(1, endPoint);

    }


3.认识了Mesh Collider 和 其中的 Convex


4.知道了如何将轴心变为中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值