角色移动,加速 C# Unity
Character Movement, Acceleration C# Unity
大家好新手。
自上而下的塞尔达风格游戏。
我正在尝试弄清楚如何让我的播放器将速度提高到最大速度,然后将速度降低到停止。
我已经使用 GetRawAxis 进行了移动,但是当我使用此方法按下移动时,我的角色以最大速度移动。
private void PlayerMovement()
{
var playerMovement = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")).normalized * Time.deltaTime * moveSpeed;
transform.position = new Vector3(
transform.position.x + playerMovement.x,
transform.position.y + playerMovement.y,
transform.position.z);
}
这是一个场景,您可以在 x 轴上移动对象,逐渐增加速度。你可以对减速做同样的事情。逐渐降低速度。
float acceleration = 0.6;
float maxSpeed = 30;
float speed = 0;
void Update(){
if(speed < maxSpeed){
speed += acceleration * Time.deltaTime;
}
transform.position.x = transform.position.x + speed*Time.deltaTime;
}
你可以试试Vector3.SmoothDamp
。
这使用存储当前 "speed" 的 Vector 并缓慢转储它。
示例可在此处找到:
https://docs.unity3d.com/ScriptReference/Vector3.SmoothDamp.html
大家好新手。
自上而下的塞尔达风格游戏。
我正在尝试弄清楚如何让我的播放器将速度提高到最大速度,然后将速度降低到停止。
我已经使用 GetRawAxis 进行了移动,但是当我使用此方法按下移动时,我的角色以最大速度移动。
private void PlayerMovement()
{
var playerMovement = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")).normalized * Time.deltaTime * moveSpeed;
transform.position = new Vector3(
transform.position.x + playerMovement.x,
transform.position.y + playerMovement.y,
transform.position.z);
}
这是一个场景,您可以在 x 轴上移动对象,逐渐增加速度。你可以对减速做同样的事情。逐渐降低速度。
float acceleration = 0.6;
float maxSpeed = 30;
float speed = 0;
void Update(){
if(speed < maxSpeed){
speed += acceleration * Time.deltaTime;
}
transform.position.x = transform.position.x + speed*Time.deltaTime;
}
你可以试试Vector3.SmoothDamp
。
这使用存储当前 "speed" 的 Vector 并缓慢转储它。
示例可在此处找到: https://docs.unity3d.com/ScriptReference/Vector3.SmoothDamp.html