控制物体的运动相关脚本

简介: 控制物体的运动相关脚本

一、Debug.Log()

用于向Console(控制台)窗口输出一串信息。

例如:

在Start函数中加入:Debug.Log("组件执行开始函数");

在Update函数中加入:Debug.Log("当前游戏进行时间:"+Time.time);

运行游戏,选择主菜单的Window->General->Connsole,Console窗口中会产生大量信息

罚下开始函数值执行了一次,后民的都是Update函数调用时输出的,会发现时间的流逝不太稳定,特别是在游戏启动的时候偏差较大。

Debug.Log()函数是写代码、查bug的好帮手,要熟练掌握

二、修改物体的位置

Unity中修改物体的位置,就是修改Transform(变换)组件的数据。在Inspector窗口可以查看和修改Transform组件的Position、Rotation、Scale参数,在脚本里也可以

有两种常用方法:

使用Translate()函数

//物体将沿着自身右侧方向(X正方向也称为右)前进1.5个单位

transform.Translate(1.5f,0,0);

直接指定新的位置

tranform.position=new Vector3(1,2.5f,3);

这里可能有两个让人觉得奇怪的地方:2.5携程2.5f,设置位置时用new Vector3(x,y,z)这种写法

主要是因为C#的规定。直接写2.5会被认为是一个double数据,而这里需要float类型数据,所以要加上f。而写new的原因是Vector3是一个值类型,position是一个属性,由于引用和值的原理,这里不能用"transform.position.y=2.5f"

一般在Update函数中修改物体的位置来实现运动,这两种方法都可以。不过由于系统繁忙时无法保证稳定的帧率,如果按照上述写法,帧率就与速度成正比了。但按照游戏开发的常规方法,应当选择"每秒移动相同的距离"。例如:60帧时,每帧移动0.1米;那么30帧时,每帧就应该移动0.2米。只用将上述代码稍稍修改就可以实现了

transform.Translate(1.5f*Time.deltaTime,0,0);

Time.deltaTime表示两帧之间的间隔,用它乘以速度就可以抵消帧率变化的影响。由于它比较小,因此速度的数值应适当放大一些

三、读取和处理输入

Unity支持多种多样的输入设备,如键盘、鼠标、手柄、触摸屏等。以下代码就可以获取用户当前的纵轴输入和横轴输入

voidUpdate(){

float v=Input.GetAxis("Vertical");//垂直方向

float h=Inpu.GetAxis("Horizontal");//水平方向

Input.GetAsix()函数的返回只是一个float类型的值,(取值范围为-1~1).Unity用这种方法将各种不同的输入方法统一在了一起

通过简单的乘法就可以将输入的幅度与物体运动的速度联系起来

transform.Translate(h*10*Time.deltaTime,0,v*10*Time.deltaTime);

四、实例:实现一个移动小球

  1. 新建一个球体
  2. 调整摄像机位置
  3. 为球体创建脚本Ball并挂载,代码如下
using UnityeEngine;
public class Ball:MonoBehaviour{
    public float speed=10;   //public字段可以在inspector界面中显示,并修改其值
    void Start(){
     }
    void Update(){
               float v=Input.GetAxis("Vertical");
               float h=Input.GetAxis("Herizontal");
               transform.Translate(h*speed*Time.deltaTime,0,v*speed*Time.deltaTime);
         }
}


相关文章
|
SpringCloudAlibaba Java 应用服务中间件
信创迁移适配实战-SpringCloudAlibaba服务以war包部署后无法注册到Nacos
信创迁移适配实战-SpringCloudAlibaba服务以war包部署后无法注册到Nacos
975 0
|
存储 Shell 网络安全
|
算法 编译器 程序员
Windows下Boost库的安装与使用
Windows下Boost库的安装与使用
3126 0
Windows下Boost库的安装与使用
|
程序员 C语言
Qt编写自定义控件49-飞机仪表盘
一、前言 飞行仪表是测定和表示飞机数据的工具,飞机中必不可少的一部分,飞行员根据飞行仪表表示的数据才能正确地做出判断。一般飞机仪表包括高度表+空速表+垂直速率表+姿态仪+航向指示表+转弯协调表。这次要绘制的是其中的姿势仪,显示飞机相对于地平线的姿态,看姿态仪,飞行员能判断飞机姿态为偏左偏右,及偏上和偏下。
2022 0
|
移动开发 JavaScript HTML5
Vue集成vue-video-player实现播放视频
Vue集成vue-video-player实现播放视频
1062 0
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
2037 5
|
存储 人工智能 自然语言处理
无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案
【8月更文挑战第8天】无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案
无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案
|
人工智能 数据可视化 安全
提升工作效率,告别Excel,尝试Zoho CRM客户管理!
曾经有客户咨询我们:“EXCEL管理客户功能不够用,但是又觉得CRM管理系统太麻烦,应该如何选择?”这篇文章就告诉您:EXCEL在客户管理方面都有哪些局限性?CRM管理系统都有哪些优势?初创企业应该怎样选择适合的CRM系统?
221 0
|
达摩院 语音技术
开源音视频剪辑工具:FunASR-APP ClipVideo
开源音视频剪辑工具:FunASR-APP ClipVideo
1616 1