Unity的虚拟轴Horizontal和TimeScale
发布时间
阅读量:
阅读量
作为一名普通的不能再普通的人,在过去几天里回过头来学习并掌握了一些Unity的实用技巧。
首先要说的是虚拟轴Horizontal
playerMoveX被赋值为Input.GetAxis('Horizontal')的结果。这是一个整数类型变量,在游戏开发中被用来获取来自玩家的水平方向输入。它存储了来自Horizontal轴的方向值,并且其取值范围在-1至1之间。明白这一点之后,在某些情况下可能会有所帮助。例如,在二维游戏中实现类似的功能可能需要较多的动画制作工作量。不过现在有了这个机制,则会减少一半的工作量哦!
下来是TimeScale,这是一个可以直接赋值的,那么它是用来干什么的呢?
子弹时间,没错!子弹时间,它可以让整个Scence里的所有东西变慢。
TimeScale的基础是1,正常时间流速
当数字为0.5时,时间流速为正常的二分之一
同理数字为2时,时间流速为正常的二倍
需要注意的是,在使用这种方法时,请确保数值不允许低于零。当数值为零时代表静止状态;如果数值低于零则表示时间倒退。使用这种方法显然是不可能的;这并不是时间回溯魔法而是时间减缓的效果。
来一段用法以示诚意
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RopeAttraction : MonoBehaviour {
public float totalTime = 0.25f;//持续时间
public float bulletTimeMeasure = 0.25f;//子弹时间力度,控制时间流速倍数
bool canLaunch;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
/*if(Input.GetMouseButtonDown(0))
{
/*if (Time.timeScale < 0) Time.timeScale = 0;
else Time.timeScale -= timeScaleDelta;
Time.timeScale -= timeScaleDelta;
}*/
//咋瓦卢多!!
if(Input.GetMouseButton(1))
{
Time.timeScale = bulletTimeMeasure;
StartCoroutine(RestartTime());
}
}
//恢复正常
IEnumerator RestartTime()
{
yield return new WaitForSeconds(totalTime);
Time.timeScale = 1f;
}
}
其效果如何?单击鼠标右键,请问您是否看到窗口?(如果显示异常)在ToatlTime后恢复正常。
这一点需要特别注意所有的力量与TimeScale结合起来会导致不平滑的现象如何解决这个问题呢?我正致力于寻找解决方案
全部评论 (0)
还没有任何评论哟~
