控制物体的运动相关脚本

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

一、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);
         }
}


相关文章
|
4月前
|
数据采集 监控 算法
LabVIEW与3D相机开发高精度表面检测系统
LabVIEW与3D相机开发高精度表面检测系统
56 2
|
6月前
|
算法
LabVIEW机械臂轨迹跟踪控制
LabVIEW机械臂轨迹跟踪控制
56 3
|
3月前
|
API
【threejs教程】让你的场景更加真实:灯光对物体的影响
【8月更文挑战第6天】threejs教程:让你的场景更加真实,灯光对物体的影响
176 6
【threejs教程】让你的场景更加真实:灯光对物体的影响
|
4月前
|
存储 监控 算法
粒子辐照环境中相机镜头防护及LabVIEW图像处理注意事项
粒子辐照环境中相机镜头防护及LabVIEW图像处理注意事项
52 1
|
6月前
|
SQL 算法
LabVIEW开发机械手圆周插补轨迹控制
LabVIEW开发机械手圆周插补轨迹控制
41 0
|
6月前
|
机器学习/深度学习 传感器 算法
目标检测+车道线识别+追踪+测距(代码+部署运行)
目标检测+车道线识别+追踪+测距(代码+部署运行)
Three.js模拟沿着路径进行运动,模拟飞机飞行,并保持运动方向
Three.js模拟沿着路径进行运动,模拟飞机飞行,并保持运动方向
1138 0
Three.js模拟沿着路径进行运动,模拟飞机飞行,并保持运动方向
|
机器学习/深度学习 传感器 编解码
【雷达成像】基于BP成像方式模拟飞机雷达正侧视或斜视模式下对地面目标成像附matlab代码
【雷达成像】基于BP成像方式模拟飞机雷达正侧视或斜视模式下对地面目标成像附matlab代码
【雷达成像】基于BP成像方式模拟飞机雷达正侧视或斜视模式下对地面目标成像附matlab代码
|
传感器 算法 数据可视化
使用三种不同的照明算法估计场景的照明和执行白平衡
使用三种不同的照明算法估计场景的照明和执行白平衡。 眼睛非常善于判断不同照明条件下的白色。然而,数码相机如果不进行某种调整,就可以很容易地捕捉到具有强烈色偏的不真实图像。自动白平衡(AWB)算法试图以最少的用户输入来校正环境光,以便生成的图像看起来像我们眼睛看到的。
170 0
|
机器学习/深度学习 传感器 算法
【车道检测】基于帧差法结合hough实现车道检测含播报声音附GUI界面
【车道检测】基于帧差法结合hough实现车道检测含播报声音附GUI界面
下一篇
无影云桌面