添加远程攻击装备和动画,制作弓箭追踪敌人
Projectile:
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- // 定义Projectile类
- public class Projectile : MonoBehaviour
- {
- [SerializeField] Transform target = null;//攻击目标
- [SerializeField] float speed = 1;//箭矢射出的速度
-
- private void Update()
- {
- if(target == null)//如果攻击目标为空
- {
- return;
- }
-
- transform.LookAt(GetAimLocation());//让箭朝向目标位置
- // 使用Translate方法让箭根据速度和时间增量来移动-- // Vector3.forward表示projectile的前向向量,speed是速度,Time.deltaTime是上一帧到当前帧的时间差
- transform.Translate(Vector3.forward*speed * Time.deltaTime);
- }
-
- private Vector3 GetAimLocation()//获取瞄准的目标位置
- {
- CapsuleCollider targetCapsule = target.GetComponent<CapsuleCollider>();//获取目标的碰撞组件
- if(targetCapsule == null)//如果碰撞为空
- {
- return target.position;//返回目标坐标
- }
-
- // 如果有CapsuleCollider组件,则返回目标位置上方CapsuleCollider高度的一半处 -确保projectile瞄准的是目标的上半身或中心位置
- return target.position + Vector3.up * targetCapsule.height /2;
- }
- }
复制代码
|