unity物体移动三种方式之——AddForceAtPosition(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liyuerge/article/details/79196826


  上次说了物体移动的三种方式中的Transform.Translate,今天我们来说说另外一种方式——AddForceAtPosition()。这种方式是通过给物体目标方向上的一个力,让物体运动,就好比你投篮,给了篮球一个朝向球篮方向的力。
  效果如图:

这里写图片描述


  代码如下:

if(Input.GetMouseButton(0))
        {

            Ray ray =  Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if(Physics.Raycast(ray, out hit))
            {

                if(hit.collider.name =="Cube")
                {                   
                    Vector3 direction = hit.transform.position - obj.transform.position;
                    //发射炮弹
                    obj.GetComponent<Rigidbody>().AddForceAtPosition(direction,   hit.transform.position,ForceMode.Impulse);
                }   
            }
        }


  带注释的那一句,就是给小球在hit.transform.position位置上施加一个direction大小的forceMode.Impulse方式的力
  函数的官方解释:

public void AddForceAtPosition(Vector3 force, Vector3 position, ForceMode mode = ForceMode.Force);


  其中三个参数:
  Vector3 force:力(矢量)
  Vector3 position:施加力的位置
  ForceMode mode :力的方式


  额额,差不多就是这样,对于这里函数的使用,大概就是这样,但是在游戏中如果追求更好的模拟真实场景中的效果,大家还是要多多练习,没有实际练习过,你是想象不出效果来的。


  AddForceAtPosition()官方文档链接

猜你喜欢

转载自blog.csdn.net/liyuerge/article/details/79196826