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

server/2024/10/19 23:28:22/

我们打开上一篇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;elseDestroy(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.ppmy.cn/server/123042.html

相关文章

Python酷库之旅-第三方库Pandas(129)

目录 一、用法精讲 576、pandas.DataFrame.merge方法 576-1、语法 576-2、参数 576-3、功能 576-4、返回值 576-5、说明 576-6、用法 576-6-1、数据准备 576-6-2、代码示例 576-6-3、结果输出 577、pandas.DataFrame.update方法 577-1、语法 577-2、参数 577-3、…

基于FreeRTOS的STM32多功能手表设计

在智能穿戴设备迅速发展的今天&#xff0c;多功能手表因其便携性和实用性而受到广泛关注。本项目旨在设计一款基于FreeRTOS操作系统的STM32多功能手表&#xff0c;通过实时多任务处理&#xff0c;实现时间显示、多级菜单、万年历、模拟手电筒、温湿度显示、电子闹钟和设置等功能…

Chip-seq数据分析处理流程

一、处理过程 要处理 SRR14879780 的 ChIP-seq 数据并进行基序分析&#xff08;包括比对到参考基因组 hg38.fasta 和峰值调用&#xff09;&#xff0c;你可以按照以下步骤操作&#xff0c;并使用相应的代码。每个步骤会涉及一些常用的生物信息学工具&#xff0c;如 FastQC、Tr…

SQL总结

一、类型判断 1.字符型 加单引号&#xff1a;select * from table where name’admin’’&#xff1b;由于加单引号后变成三个单引号&#xff0c;则无法执行&#xff0c;程序会报错&#xff1b;加 and 11 此时sql 语句为&#xff1a;select * from table where name’admin’…

计算机毕业设计 中医院问诊系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

新版本大疆上云API指令飞行(drc)模式通讯搭建思路

一、大疆上云API mqtt官方通讯指导 1.1drc链路 1.2mqtt交互时序图 二、自行搭建mqtt说明 2.1工具&#xff1a;用emqx搭建mqtt服务器&#xff0c;mqttx作为客户端测试工具 2.2端口说明&#xff1a;1883&#xff0c;普通mqtt消息端口&#xff0c;8083&#xff0c;ws通信协议端…

【算法】字符串相关

【ps】本篇有 4 道 leetcode OJ。 一、算法简介 字符串是一种数据结构&#xff0c;大多与别的算法结合在一起出题&#xff0c;例如模拟、高精度算法、双指针、dp、回溯等&#xff0c;因此这个专题的题型本身是特别丰富的。本篇选取了较为典型的字符串题型&#xff0c;除了涵盖一…

数据结构---线性表之顺序表

1.线性表的概念 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一…