利用W,S,A,D控制物体前后左右移动
方法一:
利用Input.GetAxis();方法
Input.GetAxis("Horizontal"); //利用A,D控制水平方向,这个方法的返回值是一个 在-1~1之间的数值,键盘输入A即为-1,D即为1
Input.GetAxis("Vertical"); //利用W,S控制前后方向,这个方法的返回值是一个 在-1~1之间的数值,键盘输入W即为-1,S即为1
接下来即可实现物体的前后左右移动:
void Update () {
float BallX = Input.GetAxis("Horizontal");
float BallY = Input.GetAxis("Vertical");
if (BallX>0)
{
obj.GetComponent<Rigidbody>().velocity = Vector3.right*ballVelocity;
}
if (BallX < 0)
{
obj.GetComponent<Rigidbody>().velocity = Vector3.left * ballVelocity;
}
if (BallY > 0)
{
obj.GetComponent<Rigidbody>().velocity = Vector3.forward * ballVelocity;
}
if (BallY < 0)
{
obj.GetComponent<Rigidbody>().velocity = Vector3.back * ballVelocity;
}
}
这样可以很方便的实现物体使用键盘的移动,但是也有一些缺陷,就是无法进行前左。后右等偏移方向的移动,接下来就有了第二种方法。
方法二:
同样是利用Input.GetAxis();方法,但是这次是给需要移动的方向直接施加一个力
rd=GetComponent<Rigidbody>(); //获取rigidbody组件
float BallX = Input.GetAxis("Horizontal");
float BallY = Input.GetAxis("Vertical");
rd.AddForce(new Vector(BALLX,0,BALLY)*5); //根据键盘的输入,来给物体加入各个方向的力,实现移动
这种方法完美解决了第一种方法的缺陷,并且移动效果更加真实,代码量较少
如果有什么问题,可以留言给我哦