控制物体的运动相关脚本

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

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


相关文章
基于颜色分割方法跟踪人员的面部和手部
使用基于颜色的分割方法跟踪人员的面部和手部。
92 0
|
9月前
|
机器学习/深度学习 传感器 算法
目标检测+车道线识别+追踪+测距(代码+部署运行)
目标检测+车道线识别+追踪+测距(代码+部署运行)
|
9月前
|
算法 定位技术 图形学
基于Pix4Dmapper的运动结构恢复无人机影像三维模型重建
基于Pix4Dmapper的运动结构恢复无人机影像三维模型重建
157 2
Three.js模拟沿着路径进行运动,模拟飞机飞行,并保持运动方向
Three.js模拟沿着路径进行运动,模拟飞机飞行,并保持运动方向
1265 0
|
定位技术 异构计算
|
传感器 机器学习/深度学习 算法
SIGGRAPH | 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建(1)
SIGGRAPH | 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建
266 0
|
传感器 定位技术 图形学
SIGGRAPH | 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建(2)
SIGGRAPH | 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建
246 0
|
算法
三维手臂动态matlab仿真,可以灵活控制手指运动
三维手臂动态matlab仿真,可以灵活控制手指运动
135 0
三维手臂动态matlab仿真,可以灵活控制手指运动
Threejs实现机械臂运动,机械臂dae格式模型,模型下载
Threejs实现机械臂运动,机械臂dae格式模型,模型下载
581 0

热门文章

最新文章