所以我制作了播放器,你可以用滑鼠/手指控制它。你可以將它向左/向右移動,它會自己向前移動。但問題是它太快了。這是我的代碼:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour{
private SwerveInputSystem _swerveInputSystem;
[SerializeField] private float swerveSpeed = 5f;
[SerializeField] private float maxSwerveAmount = 1f;
[SerializeField] private float verticalSpeed;
void Start(){
_swerveInputSystem = GetComponent<SwerveInputSystem>();
}
void Update(){
float swerveAmount = Time.deltaTime * swerveSpeed * _swerveInputSystem.MoveFactorX;
swerveAmount = Mathf.Clamp(swerveAmount, -maxSwerveAmount, maxSwerveAmount);
transform.Translate(swerveAmount, 0, 0);
float verticalDelta = verticalSpeed * Time.deltaTime;
// Plug verticalDelta into Translate(). Whether you use it in the y or z component depends on your game.
transform.Translate(swerveAmount, verticalDelta, 1);
}
}
uj5u.com熱心網友回復:
剛剛這樣做,它的作業原理:
transform.Translate(swerveAmount, verticalDelta, 0.1f);
uj5u.com熱心網友回復:
每當您想在每一幀中直接翻譯某些內容時,您都應該確保您的值不是基于幀的而是基于時間的。
這意味著無論設備有多快或多慢,您都希望您的物件在實際經過的相同時間內移動相同的距離。
因此,就像 X 和 Y 分量的值一樣,您還應該將 Z 分量乘以Time.deltaTime- 自上一幀以來經過的時間 - 以便將值從 aunits / frame轉換為units / second:
// will now move forward one Unity unit per second
transform.Translate(swerveAmount, verticalDelta, 1f * Time.deltaTime);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/324773.html
