【unity3d】利用键盘操作物体移动的方法

利用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);      //根据键盘的输入,来给物体加入各个方向的力,实现移动
这种方法完美解决了第一种方法的缺陷,并且移动效果更加真实,代码量较少  


如果有什么问题,可以留言给我哦 

 
 

 
 
 
发布了29 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_36834959/article/details/78812996