01【功能项目】之【主角射线点击导航】

news2024/11/16 23:51:22

首先创建一个Unity3D的项目

打开资源商店添加一个人物模型

选择一个免费资源主角添加至项目中

在unity中打开后点击下载包

点击导入包

导入成功后会出现在资源包Assets下

右键创建地面

设置地面尺寸

创建一个材料方便给地面调配颜色

选择材料的颜色

将材质拖拽给地面组为组件

将主角包的预制体Prefab放置场景当中并且 双击主角Prefab让摄像机近距离视觉

点击摄像机后键盘按键CTRL + SHIFT + F让游戏运行视角与编辑视角一致

创建一个脚本

命名为PlayerRayClickNavigation.cs

打开脚本编写代码逻辑

using UnityEngine;
using UnityEngine.AI;
public class PlayerRayClickNavigation : MonoBehaviour{
    NavMeshAgent meshAgent;
    Vector3 targetPos;
    private void Awake(){
        meshAgent = GetComponent<NavMeshAgent>();
    }
    private void Start(){
        targetPos = transform.position;
        meshAgent.speed = 4f;
        meshAgent.enabled = true;
        Invoke("EnableNavMesh", 0.2f);
    }
    void EnableNavMesh(){
        targetPos = transform.position;
        meshAgent.enabled = true;
    }
    private void Update(){
        if (!meshAgent.enabled)
            return;
        if (Input.GetMouseButtonDown(0)){
            ClickMouse();
        }
    }
    void ClickMouse(){
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        if (Physics.Raycast(ray, out hit, Mathf.Infinity, LayerMask.GetMask("Land"))){
            targetPos = hit.point;
            meshAgent.SetDestination(targetPos);
        }
    }
}

编写好代码逻辑后处理Unity编辑器下的操作

首先为Plane添加一个父物体,方便日后更换地面或者布置场景

接下来我们添加导航包

成功导入之后

为Land父物体添加一个组件NavMeshSurface导航网格面

并设置为静态变量(改变所有子物体即可)

并为Land添加一个Layer层级

起名为Land

ranh对人物完全解压缩 

为主角添加组件NavMeshAgent导航网格代理

取消组件勾选即可我们会在脚本中开启导航

点击Bake让编辑场景的地面变蓝

将代码挂载至场景中的主角身上

运行即可实现射线点击地面使人物移动

当然简单的点击移动实现了还并不完善,我们在接下来可以添加以下功能:

1.主角移动的动画

2.鼠标双击后主角进入跟随鼠标移动状态

3.鼠标单击地面的光标实现

4.让主角打开背包或者其他UI时点击UI功能时不会使人物进行移动(禁止射线穿透行为)

5.新输入系统的人物转向功能

6.摄像机跟随主角移动

7.人物释放技能等小功能

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

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

【【Unity回合2.5D】破碎纪元】 https://www.bilibili.com/video/BV1Z9vYeBEH6/?share_source=copy_web&vd_source=b7b18220b3643ac4a72a537747acaa30

下一篇文章制作任务点击移动后的动画及双击跟随功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1983957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

double类型 精度丢失的问题

前言 精度丢失的问题是在其他计算机语言中也都会出现&#xff0c;float和double类型的数据在执行二进制浮点运算的时候&#xff0c;并没有提供完全精确的结果。产生误差不在于数的大小&#xff0c;而是因为数的精度。 一、double进行运算时,经常出现精度丢失 0.10.2使用计算…

QTableView使用示例-Qt模型视图代理(Model-View-Delegate)使用示例

模型视图委托&#xff08;MVD&#xff09;是Qt中特有的设计模式&#xff0c;类似MVC设计模式&#xff0c;将MVC设计模式中的Controller当做MVD中的Delegate&#xff0c;两者的概念基本相同。不同的是委托不是独立存在&#xff0c;而是包含在视图里面。 模型视图委托设计模式中&…

#71结构体案例2(三国游戏,冒泡排序)

效果&#xff1a; 代码&#xff1a; #include <iostream> #include <string> using namespace std;//英雄结构体 struct Hero {string name;int age;string gender; };//冒泡排序 void bubbleSort(struct Hero hArray[],int len) {for(int i0;i<len-1;i){for(i…

CentOS 8 本地创建yum源

1.获取iso (有iso就可以建立本地repo) 如CentOS-8.5.2111-aarch64-dvd1.iso 2.解压iso&#xff08;mount挂载就可以吧iso解压到linux某一目录中&#xff09; mkdir /mnt/cdrom mount -o loop ./CentOS-Stream-8-aarch64-20220913-dvd1.iso /mnt/cdrom ls /mnt/cdrom 3.编…

奇偶函数的性质及运算

目录 定义 注意 特征 运算 拓展 定义 设函数f(x)的定义域D&#xff1b; 如果对于函数定义域D内的任意一个x&#xff0c;都有f(-x)&#xff0d;f&#xff08;x&#xff09;&#xff0c;那么函数f&#xff08;x&#xff09;就叫做奇函数。如果对于函数定义域D内的任意一个x…

【前端】 如何在 Vue.js 中使用 Mock 数据:教程与技巧

如何在 Vue.js 中使用 Mock 数据&#xff1a;教程与技巧 在开发过程中&#xff0c;为了测试和开发前端功能&#xff0c;你常常需要用到模拟&#xff08;mock&#xff09;数据。Vue.js 提供了灵活的方式来处理数据请求和更新&#xff0c;但在没有真实后端的情况下&#xff0c;我…

在 VueJS 中使用事件委托处理点击事件(事件委托,vue事件委托,什么是事件委托,什么是vue的事件委托)

前言 在开发 Vue 项目时&#xff0c;我们经常需要处理大量的点击事件。为每个可点击的元素单独添加事件监听器不仅会增加代码的复杂度&#xff0c;还会降低性能。事件委托是一种有效的优化方式&#xff0c;它可以显著减少事件监听器的数量&#xff0c;提高代码的可维护性和执行…

SSM禾泽校园学生商品交易平台-计算机毕设定制-附项目源码(可白嫖)50284

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对禾泽校园学生商品交易平台等问题&#xff0…

部署PXE

一 准备工作 1.rhel7主机 2.开启主机图形init 5 开图形 3.配置网络可用 4.关闭vmware dhcp功能 将VMnet8本地DHCP服务关闭 二 部署kickstart 1.安装kichstart并开启 2.安装httpd并启动 3.测试 4.配置kickstart 左上角文件保存 在vim ks.cfg中配置软件 共享 测试 四 DHCP 1.…

mysql操作(进阶)

1.数据库约束 数据库自动对数据的合法性进行校验检查的一系列机制&#xff0c;目的是为了保证数据库中能够避免被插入或者修改一些非法数据。 &#xff08;1&#xff09;mysql中提供了以下的约束&#xff1a; a.NOT NULL&#xff1a;指定某列不能为null b.UNIQUE&#xff1…

防火墙工具iptables应用详解

文章目录 前言一、Netfilter内核二、Netfilter与iptables的关系三、iptables的表与链四、iptables的常用命令与参数五、 iptables使用案例 前言 iptables是Linux系统中一款强大的防火墙工具&#xff0c;它基于Netfilter内核模块&#xff0c;允许管理员定义数据包的转发、过滤和…

RabbitMQ中如何防止消息堆积的情况发生?

RabbitMQ中如何防止消息堆积的情况发生&#xff1f; 消息堆积是消息队列系统中常见的问题&#xff0c;尤其是在高负载环境下。RabbitMQ作为一个流行的消息代理系统&#xff0c;也不可避免地会遇到这种情况。为了防止消息堆积&#xff0c;我们可以采取以下几种方法&#xff1a;…

基于node.js中国传统节日介绍网站32006-计算机毕业设计项目选题推荐(附源码)

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;中国传统节日介绍网站当然也不能排除在外。中国传统节日介绍网站是以实际运用为开发背景&#xff0c;运用软件工程原理和…

Ubuntu22.04系统下,图像修复项目CodeFormer的部署——点动科技

Ubuntu22.04系统下&#xff0c;图像修复项目CodeFormer的部署——点动科技 一、前言&#xff1a;二、开始2.1 ubuntu和docker基本环境配置1.更新包列表&#xff1a;2. 安装docker依赖3. 添加docker密钥4.添加阿里云docker软件源5.安装docker6.安装完成docker测试7. docker配置国…

windows11远程桌面如何打开

随着远程办公的普及&#xff0c;选择合适的远程桌面工具变得尤为重要。在Windows 11上&#xff0c;用户可以利用系统自带的远程桌面功能&#xff0c;或选择更专业的第三方解决方案&#xff0c;如Splashtop。本文将详细介绍如何在Windows 11上启用远程桌面&#xff0c;并对比Win…

C语言——位运算

一、位运算符和位运算 C语言提供如下表所列出的位运算符&#xff1a; 说明&#xff1a; (1)位运算符中除&#xff5e;以外&#xff0c;均为二目(元)运算符&#xff0c;即要求两侧各有一个运算量。 (2)运算量只能是整型或字符型的数据&#xff0c;不能为实型数…

简单的docker学习 第4章 docker容器

第4章 Docker容器 4.1 容器基础 4.1.1 容器启动流程 通过 docker run 命令可以启动运行一个容器。该命令在执行时首先会在本地查找指定的镜像&#xff0c;如果找到了&#xff0c;则直接启动&#xff0c;否则会到镜像中心查找。如果镜像中心存在该镜像&#xff0c;则会下载到…

读零信任网络:在不可信网络中构建安全系统10认证身份

1. 用户所知道的信息 1.1. 只有用户本人知道的信息 1.2. 密码 1.2.1. 密码是常用的认证机制 1.2.2. 密码验证就是确认用户“所知”性的较好途径 1.2.3. 用户可以利用密码管理器来便捷地管理多个高强度密码&#xff0c;从而有效降低数据泄露风险 1.2.4. 长度足够长 1.2.4.1…

Docker数据管理,数据卷,容器服务器数据卷

一、容器的数据管理介绍 1.1 Docker容器分层 Docker镜像由多个只读层叠加而成&#xff0c;启动容器时&#xff0c;Docker会加载只读镜像层并在镜像栈顶部添加一个读写层。 如果运行中的容器修改了现有的一个已经存在的文件&#xff0c;那该文件将会从读写层下面的只读层复制到…

GroupMamba实战:使用GroupMamba实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…