Unity 不使用碰撞检测方法使得击中特效产生在球形物体表面

菜鸟学习一个unity塔防游戏项目制作激光塔

由于我是使用Line Renderer来制作的激光特效 

所以我需要确定特效的起点与终点

那么定义变量

Vector3 normalize

//单位向量

float distance

//确定向量长度

Vector3 endPosition

//终点坐标

GameObject firePosition

//起点坐标

Gameobject LaserEffect

//击中特效

normalize = (enemys[0].transform.position - firePosition.position).normalized;
//计算特效起点到敌人坐标的单位向量,确定方向
distance = Vector3.Distance(firePosition.position, enemys[0].transform.position) - enemys[0].GetComponent<SphereCollider>().radius;
//获取球形物体碰撞盒的半径,确定到模型表面的距离
endPosition=firePosition.position+distance*normalize;
//获取Line Renderer 目标坐标距离
LaserEffect.transform.position = endPosition;
//使得特效产生在目标位置
LaserEffect.transform.LookAt(firePosition);
//确定特效方向

最终效果

特效起始位置

物体中心位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值