1.项目创建与角色移动

目录

1.创建项目

2.导入素材  

3.搭建场景 

4.创建玩家 


1.创建项目

2.导入素材  

3D GUNS | Guns Pack | 3D 武器 | Unity Asset Storeicon-default.png?t=N7T8https://assetstore.unity.com/packages/3d/props/weapons/3d-guns-guns-pack-228975

Prototyping Pack (Free) | 3D | Unity Asset Storeicon-default.png?t=N7T8https://assetstore.unity.com/packages/3d/prototyping-pack-free-94277 

3.搭建场景 

(1)选择合适的Meshes拖入场景中并调整位置 

  

(2)创建空物体“Environment”并将场景中的物体和Directional Light置于与其内部(使用Ctrl进行多选) 

(3)选择空物体“Environment”,调整Scale属性使其成比例放大

(4)  选择合适的Materials拖至对应物体

 效果图如下: 

4.创建玩家 

(1) 创建空物体“Player”并在其内部创建同为空物体“Graphis”和Camera,在“Graphis内部”创建一个球体作为玩家模型。Hierarchy中结构应如下:

对空物体“Player”添加Sphere Collider组件和Rigidbody组件 

Rigidbody组件的设置如下:  

 (2)选择合适的枪械素材,将其拖入场景并置于空物体“Player”中Camera下。Hierarchy中的物体结构应如下: 

分别先后将对应文件夹下的New Material和obstacle_texture拖至枪械素材 

适当调整枪械相对于玩家的位置

 (4)在Asset目录下创建Prefabs目录,并将刚刚创建的Player拖入所新创建的Prefabs目录以创建预制体

(5)在Asset目录下创建Scripts目录,用与放置所编写的各种script,并在其内部创建Player目录用于存储与Player相关的script

(6)在Player预制体上创建并编写PlayerInput.cs,用与接收玩家输入

using UnityEngine;public class PlayerInput : MonoBehaviour
{[SerializeField]private float speed = 5f;[SerializeField] private PlayerControllor playerControllor;[SerializeField] private float lookSensitivity = 8f;// Start is called before the first frame updatevoid Start(){Cursor.lockState = CursorLockMode.Locked;}// Update is called once per framevoid Update(){float xMov = Input.GetAxisRaw("Horizontal");float yMov = Input.GetAxisRaw("Vertical");Vector3 velocity = (transform.right * xMov + transform.forward * yMov).normalized*speed;playerControllor.Move(velocity);float xMouse = Input.GetAxisRaw("Mouse X");float yMouse = Input.GetAxisRaw("Mouse Y");Vector3 yRotation = new Vector3(0f, xMouse, 0f)*lookSensitivity;Vector3 xRotation = new Vector3(-yMouse, 0f, 0f)*lookSensitivity;playerControllor.Rotate(yRotation,xRotation);}
}

(7)在Player预制体是创建并编写PlayerController.cs,用于控制玩家行为

using UnityEngine;public class PlayerControllor : MonoBehaviour
{[SerializeField] private Rigidbody rb;[SerializeField] private Camera _camera;private Vector3 velocity = Vector3.zero;//速度:每秒钟移动的距离private Vector3 yRotation=Vector3.zero;//旋转角色private Vector3 xRotation = Vector3.zero;//旋转视角public void Move(Vector3 _velocity){velocity = _velocity;}public void Rotate(Vector3 _yRotation, Vector3 _xRotation){yRotation = _yRotation;xRotation = _xRotation;}private void PerformMovement(){if (velocity != Vector3.zero){rb.MovePosition(rb.position+velocity*Time.fixedDeltaTime);}}private void PerformRotation(){if (yRotation != Vector3.zero){rb.transform.Rotate(yRotation);}if (xRotation != Vector3.zero){_camera.transform.Rotate(xRotation);}}private void FixedUpdate(){PerformMovement();PerformRotation();}
}

将(6)(7)所编写的PlayerInput.cs和PlayerController.cs移动至Assets/Scripts/Player

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

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

相关文章

外包公司干了2个月,技术倒退两年...

先说一下自己的情况,本科生,19年通过校招进入杭州某软件公司,干了接近3年的功能测试,今年8月份,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了三年的功能测试…

87、Redis 的 value 所支持的数据类型(String、List、Set、Zset、Hash)---->List相关命令

本次讲解要点: List相关命令:是指value中的数据类型 启动redis服务器: 打开小黑窗: C:\Users\JH>e: E:>cd E:\install\Redis6.0\Redis-x64-6.0.14\bin E:\install\Redis6.0\Redis-x64-6.0.14\bin>redis-server.exe redi…

R语言绘制环状柱状堆积图+分组+显著性

无叠加、显著性的代码: #设置工作环境 rm(listls()) setwd("D:/Desktop/0000/code-main/条形图")#加载R包 library(ggplot2) # Create Elegant Data Visualisations Using the Grammar of Graphics library(tidyverse) # Easily Install and Load the Ti…

HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Badge

可以附加在单个组件上用于信息标记的容器组件。该组件从API Version 7开始支持。 支持单个子组件。子组件类型:系统组件和自定义组件,支持渲染控制类型(if/else、ForEach和LazyForEach)。 一、接口 方法1: Badge(value…

【Python实战】-- 按条件提取所有目录下所有Excel文件指定行数据

系列文章目录 文章目录 系列文章目录前言一、背景二、使用步骤1.源码总结前言 一、背景 有多个目录,每个目录下有若干Excel文件,我们要提取每个Excel里面指定的行数据: 目录如下: 注:目录数量、名称不限,其中文件数量、名称不限 二、使用步骤 1.源码 解释: 每个文件…

计算机视觉: 可控的高质量人体生成

背景 关于人体动作的生成范式目前主流的方向可以分为以下两种: Sequence based motion generation: 给定控制信号然后一次性生成连续的动作,能生成一些连续高阶语义的动作信号,因为其能看到整个动作信号。eg: MDM: Human Motion Diffusion Model, Teve…

LongLoRA:不需要大量计算资源的情况下增强了预训练语言模型的上下文能力

麻省理工学院和香港中文大学推出了LongLoRA,这是一种革命性的微调方法,可以在不需要大量计算资源的情况下提高大量预训练语言模型的上下文能力。 LongLoRA是一种新方法,它使改进大型语言计算机程序变得更容易,成本更低。训练LLM往…

Elastic SQL 输入:数据库指标可观测性的通用解决方案

作者:Lalit Satapathy, Ishleen Kaur, Muthukumar Paramasivam Elastic SQL 输入(metricbeat 模块和输入包)允许用户以灵活的方式对许多支持的数据库执行 SQL 查询,并将结果指标提取到 Elasticsearch。 本博客深入探讨了通用 SQL …

RFID技术引领汽车零部件加工新时代

RFID技术的兴起引领了汽车零部件加工领域的新时代,作为一种利用无线电频率进行自动识别的技术,RFID技术能够快速、准确地识别物体并获取相关数据,在汽车零部件加工中,RFID技术具有重要的应用价值,可以提高生产效率、降…

ElementUI基本介绍及登录注册案例演示

目录 前言 一.简介 二.优缺点 三.Element完成登录注册 1. 环境配置及前端演示 1.1 安装Element-UI模块 1.2 安装axios和qs(发送get请求和post请求) 1.3 导入依赖 2 页面布局 2.1组件与界面 3.方法实现功能数据交互 3.1 通过方法进行页面跳转 3.2 axios发送get请求 …

Ubuntu性能分析-ftrace 底层驱动

1、框架介绍 ftrace内核驱动可以分为几部分:ftrace framework,RingBuffer,debugfs,Tracepoint,各种Tracer。 ftrace框架是整个ftrace功能的纽带,包括对内和的修改,Tracer的注册,RingBuffer的控制等等。 RingBuffer是静态动态ftrace的载体。 debugfs则提供了用户空间…

深度解读F5:从企业级负载均衡到云原生应用服务

上世纪九十年代,Internet 的快速发展催生了大量在线网站,Web 访问量迅速提升。在互联网泡沫破灭以前,这个领域基本是围绕如何对 Web 网站进行负载均衡与优化。因而在早期,也会有“Web 交换机”的说法。从1997年 F5 发布了 BIG-IP …

对负采样(negative sampling)的一些理解

负采样(negative sampling)通常用于解决在训练神经网络模型时计算softmax的分母过大、难以计算的问题。但在LightGCN模型论文的BPR LOSS中,负采样的概念可能与传统的softmax分母问题不完全一样。 在LightGCN模型中,不同于传统的协…

主机安装elasticsearch后无法登陆

问题描述 2023年7月31日11点02分,主机安装elasticsearch后无法登陆,通过后台查看主机宕机状态,CPU达到100%,按业务侧要求执行重启操作后发现主机黑屏无法正常进入系统,系统卡死。 2.原因分析 2.1通过故障…

WebGL 渲染三维图形作为纹理贴到另一个三维物体表面

目录 渲染到纹理 帧缓冲区对象和渲染缓冲区对象 帧缓冲区对象 帧缓冲区对象的结构 如何实现渲染到纹理 示例程序(FramebufferObject.js) 创建帧缓冲区对象(gl.createFramebuffer()) gl.createFra…

机器学习——一元线性回归构造直线,并给出损失函数

目 录 Question 问题分析 1.概念补充 2.流程分析 3.注意 具体实现 最终成果 代码 思考: Question 在二维平面有n个点,如何画一条直线,使得所有点到该直线距离之和最短 如果能找到,请给出其损失函数 问题分析 1.概念…

C#,数值计算——Ranfib的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Implements Knuths subtractive generator using only floating operations. See /// text for cautions. /// </summary> public class Ranfib { p…

【运维日常】华为云专线实现idc通过nat出网

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

Android Jetpack Compose之确定重组范围并优化重组

目录 1.概述2.确定Composable重组的范围3.优化重组的性能3.1 Composable 位置索引3.2 通过Key添加索引信息3.3 使用注解Stable优化重组 1.概述 前面的文章提到Compose的重组是智能的&#xff0c;Composable函数在进行重组时会尽可能的跳过不必要的重组&#xff0c;只对需要变化…

外包干了2个月,技术有明显退步...

先说一下自己的情况&#xff0c;本科生&#xff0c;18年通过校招进入广州某软件公司&#xff0c;干了接近3年的功能测试&#xff0c;今年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!可我已经在一个企业干了3年的功能测试&…