如何阻止我的 2D 角色在运动后滑行
How can I Stop my 2D Character from Gliding After Movement
我目前正在制作一款 2D 自上而下的生存游戏。我已经对播放器控制器进行了编码,它工作得很好,除了一个让我烦恼的问题!每当我停止按下移动键时,我的角色都不会停止移动(或非常缓慢地减速)。如果不是几乎立即,我怎样才能让它立即停止?任何提示帮助谢谢!
这是我正在使用的代码!
using UnityEngine;
using System.Collections;
public class CharacterMovement : MonoBehaviour{
public float speed;
private Rigidbody2D rb2d;
void Start ()
{
rb2d = GetComponent<Rigidbody2D> ();
}
void FixedUpdate()
{
float moveHorizontal = Input.GetAxisRaw ("Horizontal");
float moveVertical = Input.GetAxisRaw ("Vertical");
Vector2 movement = new Vector2 (moveHorizontal, moveVertical);
rb2d.AddForce (movement * speed);
}
}
我找到了增加减速的方法。我废弃了我的代码并更改了机制,以便角色跟随鼠标并使用 "W" 键或向上箭头向前移动。这平滑了方向变化并使游戏玩法更加愉快,至于减速,我通过使 rigidbody2D 检查器中的 Linear Drag 多于一个并提高速度来弥补速度损失来解决这个问题。
这是我为未来的答案寻求者编写的代码!
using UnityEngine;
using System.Collections;
public class CharacterMovement : MonoBehaviour{
public float speed;
private Rigidbody2D rbtd;
void Start ()
{
rbtd = GetComponent<Rigidbody2D> ();
}
void FixedUpdate()
{
var mousePosition = Camera.main.ScreenToWorldPoint (Input.mousePosition);
Quaternion rot = Quaternion.LookRotation(transform.position - mousePosition,
Vector3.forward);
transform.rotation = rot;
transform.eulerAngles = new Vector3 (0, 0, transform.eulerAngles.z);
rbtd.angularVelocity = 0;
float input = Input.GetAxis ("Vertical");
rbtd.AddForce (gameObject.transform.up * speed * input);
}
}
我目前正在制作一款 2D 自上而下的生存游戏。我已经对播放器控制器进行了编码,它工作得很好,除了一个让我烦恼的问题!每当我停止按下移动键时,我的角色都不会停止移动(或非常缓慢地减速)。如果不是几乎立即,我怎样才能让它立即停止?任何提示帮助谢谢! 这是我正在使用的代码!
using UnityEngine;
using System.Collections;
public class CharacterMovement : MonoBehaviour{
public float speed;
private Rigidbody2D rb2d;
void Start ()
{
rb2d = GetComponent<Rigidbody2D> ();
}
void FixedUpdate()
{
float moveHorizontal = Input.GetAxisRaw ("Horizontal");
float moveVertical = Input.GetAxisRaw ("Vertical");
Vector2 movement = new Vector2 (moveHorizontal, moveVertical);
rb2d.AddForce (movement * speed);
}
}
我找到了增加减速的方法。我废弃了我的代码并更改了机制,以便角色跟随鼠标并使用 "W" 键或向上箭头向前移动。这平滑了方向变化并使游戏玩法更加愉快,至于减速,我通过使 rigidbody2D 检查器中的 Linear Drag 多于一个并提高速度来弥补速度损失来解决这个问题。 这是我为未来的答案寻求者编写的代码!
using UnityEngine;
using System.Collections;
public class CharacterMovement : MonoBehaviour{
public float speed;
private Rigidbody2D rbtd;
void Start ()
{
rbtd = GetComponent<Rigidbody2D> ();
}
void FixedUpdate()
{
var mousePosition = Camera.main.ScreenToWorldPoint (Input.mousePosition);
Quaternion rot = Quaternion.LookRotation(transform.position - mousePosition,
Vector3.forward);
transform.rotation = rot;
transform.eulerAngles = new Vector3 (0, 0, transform.eulerAngles.z);
rbtd.angularVelocity = 0;
float input = Input.GetAxis ("Vertical");
rbtd.AddForce (gameObject.transform.up * speed * input);
}
}