Udemy-Unity制作类暗黑破坏神游戏记录-P111

2024-09-24
135看过
添加远程攻击装备和动画,制作弓箭追踪敌人

Projectile:
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. // 定义Projectile类
  5. public class Projectile : MonoBehaviour
  6. {
  7.     [SerializeField] Transform target = null;//攻击目标
  8.     [SerializeField] float speed = 1;//箭矢射出的速度
  9.     private void Update()
  10.     {
  11.         if(target == null)//如果攻击目标为空
  12.         {
  13.             return;
  14.         }
  15.         transform.LookAt(GetAimLocation());//让箭朝向目标位置
  16.         // 使用Translate方法让箭根据速度和时间增量来移动-- // Vector3.forward表示projectile的前向向量,speed是速度,Time.deltaTime是上一帧到当前帧的时间差
  17.         transform.Translate(Vector3.forward*speed * Time.deltaTime);
  18.     }
  19.     private Vector3 GetAimLocation()//获取瞄准的目标位置
  20.     {
  21.         CapsuleCollider targetCapsule = target.GetComponent<CapsuleCollider>();//获取目标的碰撞组件
  22.         if(targetCapsule == null)//如果碰撞为空
  23.         {
  24.             return target.position;//返回目标坐标
  25.         }
  26.         // 如果有CapsuleCollider组件,则返回目标位置上方CapsuleCollider高度的一半处  -确保projectile瞄准的是目标的上半身或中心位置  
  27.         return target.position + Vector3.up * targetCapsule.height /2;
  28.     }
  29. }
复制代码

回复

举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表