版权声明:本文为博主原创文章,未经博主允许不得转载。 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()官方文档链接