记录:Unity脚本的编写2.0

news2024/11/23 11:35:50

目录

  • 前言
  • 控制方法
    • 键盘控制
    • 鼠标控制
    • 虚拟控制器控制
  • 平移和旋转

前言

前面记录了一些简单的unity脚本用来控制unity中对象模型的移动(或者不能叫控制,毕竟它是开启之后自己在跑的),那么让模型可以根据用户的操作来进行变化的方法自然也不能少(例如用键盘控制移动,用鼠标控制视角什么的),那么就同样记录一下,至于添加模型添加脚本一类的在此就不做赘述

控制方法

键盘控制

用键盘控制模型的移动可能是我们在游戏中进行的第一步操作,编写一些基本的代码实现这个功能

using JetBrains.Annotations;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using UnityEngine;
using UnityEngine.Animations;
/*
* 输入系统:INputSystem
* 
*/

public class 找异性 : MonoBehaviour//这个class的名字是随便打的,不用太过在意。。
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
         //键盘操作
         if (Input.GetKey(KeyCode.Space))
         {
             Debug.Log("按住空格");
         }
         if (Input.GetKey(KeyCode.Space))
         {
             Debug.Log("抬起空格");
             transform.Translate(Vector3.up * 10);
         }
         if (Input.GetKeyDown(KeyCode.Space))
         {
             Debug.Log("按下空格");
         }
         Debug.Log("按下空格");
    }

在这里插入图片描述
点击空格之后对象就会上升(毕竟代码里面写的是up)
在这里插入图片描述

鼠标控制

而鼠标控制同样十分常见

using JetBrains.Annotations;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using UnityEngine;
using UnityEngine.Animations;
/*
* 输入系统:INputSystem
* 
*/

public class 找异性 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
         //鼠标控制
         if (Input.GetMouseButton(0)){
             Debug.Log("抬起鼠标左键");
             transform.Translate(Vector3.up * 10);
         }
         if (Input.GetMouseButtonDown(0))
         {
             Debug.Log("按下鼠标左键");
         }
    }

同样的,通过按动鼠标按键可以对对象进行操作

虚拟控制器控制

虚拟控制器可以用在那些需要有控制器但又无需I/O点联接的应用。 与需要控制器硬件不同的是,虚拟控制器依靠的是运行在Insight工作站上的控制器固件版本(Firmware)。 控制器用Soft来指示是虚拟的控制而不需硬件的使用

using JetBrains.Annotations;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using UnityEngine;
using UnityEngine.Animations;
/*
* 输入系统:INputSystem
* 
*/

public class 找异性 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
         //虚拟控制器控制
         Debug.Log(Input.GetAxis("horizontal"));
         Input.GetAxis("Vertical");
         Input.GetAxisRaw("orizontal");


         Debug.Log("");*/
    }

平移和旋转

那么,已经知道了上面的基础操作,就可以做一些更多的东西,比如同时使用键盘和鼠标对模型的移动旋转进行操作
这就要关系到unity中的输入管理器了
在这里插入图片描述
点击unity中的编辑-项目设置(或project settings)
在这里插入图片描述
点击输入管理器,就可以看到关系到这些操作的设置,根据这些内容进行代码的编写

using JetBrains.Annotations;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using UnityEngine;
using UnityEngine.Animations;
/*
* 输入系统:INputSystem
* 
*/

public class 找异性 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }
public float floSpeed = 2;//设置初始速度,下同理
    public float floRotate = 2;
    // Update is called once per frame
    void Update()
    {

        Move();//键盘控制物体平移
        
        Look();//鼠标控制物体旋转
       
       
    }
    private void Move()
        {
            float x = Input.GetAxis("Horizontal");
            float z= Input.GetAxis("Vertical");
            transform.Translate(new Vector3(x,0, z) * floSpeed * Time.deltaTime);
        } 
    private void Look()
        {
            float y = Input.GetAxis("Mouse Y") *floRotate* Time.deltaTime;
            float x = Input.GetAxis("Mouse X") *floRotate* Time.deltaTime;
        transform.Rotate(Vector3.up, x);
        transform.Rotate(Vector3.down, y);
        
        }
}

在这里插入图片描述
在这里插入图片描述
可以看到,在键盘的操控下(wasd),模型随之而动了起来,由于使用的是球形,所以旋转可能不太能看出来,但是可以观察到transform一栏关于旋转的坐标发生了变化,就知道旋转确实发生了

以上。

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

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

相关文章

SQL监控工具

什么是 SQL 监控 SQL 监视是跟踪和分析整个 MSSQL 生态系统的过程,以识别性能问题并防止依赖数据库的应用程序变慢和/或遇到中断,它有助于获取有关 SQL 服务器的数据库会话、查询、作业、CPU 和内存资源、群集、配置和可用性组的信息。 为什么 MSSQL 监…

JavaScript 笔记: 函数

1 函数声明 2 函数表达式 2.1 函数表达式作为property的value 3 箭头函数 4 构造函数创建函数(不推荐) 5 function 与object 5.1 typeof 5.2 object的操作也适用于function 5.3 区别于⼀般object的⼀个核⼼特征 6 回调函数 callback 7 利用function的pr…

TensorFlow入门(十、共享变量)

使用tf.Variable方法创建变量 使用tf.Variable方法创建变量时有两点需要注意: ①一般情况下,使用tf.Variable方法创建的变量都有作用域,也可叫做变量的可用性范围,即在变量所属的模型内,变量的名字是有效可用的。 ②使用tf.Variable方法创建变量时,会生成一个新的变量。如果在一…

激活函数与loss的梯度

激活函数: 最开始由生物学家对青蛙的神经元机制进行研究发现,青蛙的神经元有多个输入x0、x1、x2,响应值是他们加权后的结果,但响应值如果小于阈值,则不会响应,而只有大于阈值时,才会有固定的响应…

LeetCode 1277. 统计全为 1 的正方形子矩阵【动态规划】1613

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

紫光 DDR3 IP核调试

1. IP核简介 直接编写DDR2/DDR3的逻辑工作量不太大,但是涉及到双边延、高速率的读取,时序很复杂。因此一般抖采用IP核实现。紫光的SDRAM IP核为HMIC_H IP。 HMIC_H IP 包括了 DDR Controller、DDR PHY 和 PLL,用户通过 AXI4 接口实现数据的读…

十三、MySQL 主从复制

一、MySQL 主从复制 1. 主从复制原理 主库 有一个 工作线程 I/O dump thread(转储线程)。从库 有两个工作线程 I/O thread 和 SQL thread。主库 通过 I/O dump thread 给 从库 I/O thread 传送 binlog 日志。 主从同步过程中: 主库 把接收的…

大厂笔试真题【栈】美团2023春招-火车迷【欧弟算法】全网最全大厂秋招题解

文章目录 题目描述与示例题目描述输入描述输出描述示例一输入输出 示例二输入输出 解题思路代码pythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目描述与示例 题目描述 小美是一个火车迷。最近她在观察家附近火车站的火车驶入和驶出情况,发现…

C/C++学习 -- Base64算法

Base64算法概述 Base64是一种用于将二进制数据表示为ASCII字符集中的可打印字符的编码方法。它由64个不同的字符组成,通常包括26个大写字母、26个小写字母、10个数字以及两个特殊字符(通常是""和"/")。Base64编码的目的…

【Vue基础-数字大屏】地图标记涟漪效果设置

一、需求说明 将地图中北京市、陕西市、南宁市分别以实心圆、涟漪圆、涟漪圆标记出来 二、代码实践 涉及三个文件 1、App.vue: <template><Screen1/> </template> <script> import Screen1 from "./components/Screen1.vue"; export def…

如何应对数据安全四大挑战?亚马逊云科技打出“组合拳”

数字经济时代&#xff0c;数据被公认为继土地、劳动力、资本、 技术之后的又一重要生产要素。对于企业而言&#xff0c;数据则是一切创新与关键决策的根源。 然而&#xff0c;企业在发挥数据资产的商业价值方面&#xff0c;却面临诸多挑战&#xff0c;比如敏感数据识别、跨组织…

【高阶数据结构】图详解第一篇:图的基本概念及其存储结构(邻接矩阵和邻接表)

文章目录 1. 图的基本概念1.1 什么是图1.2 有向图和无向图1.3 完全图1.4 邻接顶点1.5 顶点的度1.6 路径1.7 路径长度1.8 简单路径与回路1.9 子图1.10 连通图1.11 强连通图1.12 生成树 2. 图的存储结构2.1 邻接矩阵2.2 邻接矩阵代码实现结构定义构造函数添加边打印图测试 2.3 邻…

leetCode 718.最长重复子数组 动态规划 + 优化(滚动数组)

718. 最长重复子数组 - 力扣&#xff08;LeetCode&#xff09; 给两个整数数组 nums1 和 nums2 &#xff0c;返回 两个数组中 公共的 、长度最长的子数组的长度 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,3,2,1], nums2 [3,2,1,4,7] 输出&#xff1a;3 解释&…

2023年台州市第三届网络安全技能大赛(MISC)这是神马

这是神马 考点&#xff1a;冰蝎流量特征数据包&#xff0c;需要解密 emoj解密 冰蝎之前做过 特征就是先base64编码在AES编码 我们在数据包里面找到了密钥&#xff1a;144a6b2296333602 这里我们知道了密钥我们就去解密 先筛选HTTP协议 导出HTTP数据流可以看到传了shell.php 随…

美容美甲小程序商城的作用是什么

美容院往往有很高需求&#xff0c;女性悦己经济崛起&#xff0c;加之爱美化程度提升&#xff0c;无论线下环境还是线上互联网信息冲击&#xff0c;美容服务、化妆产品等市场规格一直稳增不减。 通过【雨科】平台制作美容美甲商城&#xff0c;售卖相关服务/产品&#xff0c;模块…

记两次内网入侵溯源

1.1、入侵告警 1、某天深夜主机防护突然爆出CS木马后门&#xff0c;这攻击队不讲武德呀&#xff0c;还好没睡着2、赶紧叫醒旁边看流量设备的哥们儿&#xff0c;尝试Shiro 反序列漏洞攻击成功3、测试目标网站存在shiro反序列化漏洞1.2、上机排查 1、上机将CS木马下载下来&…

Vue3 reactive和ref详解

reactive Vue3.0中的reactive reactive 是 Vue3 中提供的实现响应式数据的方法。在 Vue2 中响应式数据是通过 defineProperty 来实现的&#xff0c;在 Vue3 中响应式数据是通过 ES6 的 Proxy来实现的。reactive 参数必须是对象 (json / arr)如果给 reactive 传递了其它对象 默…

基于JavaWeb的家用电器信息管理系统

本系统采用基于JAVA语言实现、架构模式选择B/S架构&#xff0c;Tomcat7.0及以上作为运行服务器支持&#xff0c;基于JAVA等主要技术和框架设计&#xff0c;idea作为开发环境&#xff0c;数据库采用MYSQL5.7以上。 开发环境&#xff1a; JDK版本&#xff1a;JDK1.8 服务器&…

intel深度相机 D455及D4系列入门教程(逐行代码讲解)

1.介绍 Intel RealSense D435、D455等D4系列&#xff1a; Intel D4系列深度相机是由英特尔&#xff08;Intel&#xff09;公司推出的一款深度感知摄像头&#xff0c;专为实现计算机视觉和深度学习应用而设计。这款相机使用了英特尔的深度感知技术&#xff0c;结合了摄像头和红…

三极管及继电器的使用(单片机如何控制灯泡等大型电器)

1.对于初入硬件的小伙伴一定会用到三极管和继电器&#xff0c;如下图&#xff08;三极管&#xff09; 如下图&#xff08;继电器&#xff09; 当然上述三极管和继电器&#xff0c;只是众多的其中一种&#xff0c;而且继电器是包装好了的&#xff0c;这个应该叫继电器模块&#…