当前位置: 首页 > article >正文

『功能项目』宠物的召唤跟随【79】

我们打开上一篇78装备齐全特效的项目,

本章要做的事情是实现宠物跟随功能

首先创建一个宠物召唤界面

重命名按钮组件为CallPetBtn

重命名Image组件为PetExample

宠物资源所在资源文件夹

在主角预制体中的身后位置设置一个宠物跟随点

创建宠物动画控制器

拖拽至Pet01预制体动画控制器框选

创建脚本:PetFollowTarget.cs

实现宠物到达目标点就播放Idle动画,未到目标点就朝着目标点前进

using UnityEngine;
public class PetFollowTarget : MonoBehaviour{
    Transform target; 
    float speed = 2f; 
    Animator animator;
    void Start(){
        target = GameObject.Find("PlayerNormal/PetsSmallPos").gameObject.transform;
        animator = GetComponent<Animator>(); 
    }
    void Update(){
        if (target != null){
            Vector3 direction = target.position - transform.position;
            float distance = direction.magnitude;
            if (distance > 0.1f){
                animator.SetBool("IsMoving", true);
                transform.LookAt(target.position);
                transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime);
            }
            else{
                animator.SetBool("IsMoving", false);
            }
        }
    }
}

修改脚本:CallOrHidePet.cs

using UnityEngine;
using UnityEngine.UI;
public class CallOrHidePet : MonoBehaviour{
    Button callBtn;
    GameObject petPrefab;
    GameObject petInstance;
    void Start(){
        petPrefab = Resources.Load<GameObject>("Prefabs/Pets/Pet01Small");
        callBtn = transform.Find("Image/CallPetBtn").GetComponent<Button>(); ;
        callBtn.onClick.AddListener(OnCallButtonClick);
    }
    public void OnCallButtonClick(){

        if (petInstance == null){
            petInstance = Instantiate(petPrefab,
                GameObject.FindWithTag("Player").transform.position + new Vector3(-2f, 0, -1f),
                Quaternion.identity);
            petInstance.AddComponent<PetFollowTarget>();
        }
        else{
            if (GameObject.Find("PlayerNormal") == null)
                return;
            else
                Destroy(petInstance);
        }
    }
    void OnDestroy(){
        Button callBtn = transform.Find("Image/CallPetBtn").GetComponent<Button>();
        if (callBtn != null)
            callBtn.onClick.RemoveListener(OnCallButtonClick);
    }
}

 修改脚本:UIManager.cs

实现开关宠物界面及召唤关闭宠物

运行项目

本章做了实现了开关宠物UI界面,召唤取消宠物,宠物跟随主角身后Pos点的功能

接下来的文章内容:

1.宠物随机攻击的巨型化显示

2.窗口可拖拽脚本

3.点击名称寻找地点功能

4.隐藏怪物的生成

5.怪物I攻击范围内的主动攻击

6.掉落坐骑蛋的获取

7.异步传送转换场景

以及开放回合制、坐骑系统、宠物系统、背包系统、神炼系统、商城系统、Boss的目标跟随任务导航系统以及UI播放3D动画效果等等。

具体项目运行效果请关注water1024的b站视频项目演示《破碎纪元》

water1024的个人空间-water1024个人主页-哔哩哔哩视频 (bilibili.com)icon-default.png?t=O83Ahttps://space.bilibili.com/1050927514?spm_id_from=333.1007.0.0


http://www.kler.cn/a/329648.html

相关文章:

  • MySQL、HBase、ES的特点和区别
  • K8S开启/关闭审计日志
  • ubuntu22.04安装注意点
  • DeepSeek-v3在训练和推理方面的优化
  • 一些常见的Java面试题及其答案
  • OpenAI推出首个AI Agent!日常事项自动化处理!
  • 有关Python时间戳的计算
  • OpenAI全新多模态内容审核模型上线:基于 GPT-4o,可检测文本和图像
  • lstm实践
  • 如何在 Windows 10 上恢复未保存/删除的 Word 文档
  • C++ 学习,标准库
  • 结构光编解码—正反格雷码解码代码
  • SQL_create_view
  • VR、AR、MR、XR 领域最新科研资讯获取指南
  • CSS链接
  • 查找与排序-快速排序
  • 数造科技入选中国信通院《高质量数字化转型产品及服务全景图》三大板块
  • OpenCV透视变换:原理、应用与实现
  • Mysql 学习——项目实战
  • 企业级版本管理工具(1)----Git
  • WPF之UI进阶--完整了解wpf的控件和布局容器及应用
  • 栏目一:使用echarts绘制简单图形
  • HttpSession使用方法及原理
  • .c、.cpp、.cc、.cxx、.cp后缀的区别
  • YOLOv8改进,YOLOv8改进主干网络为GhostNetV3(2024年华为的轻量化架构,全网首发),助力涨点
  • C++ STL(3)list