unity 射线的基础使用方法

如果想要实现:用鼠标来移动物体那么就需要使用射线。以下是关键代码:

public class PlayerController:MonoBehaviour{

public float speed;//定义移动速度,将代码覆盖给要移动的物体

private Vector3 target;//目标位置

private bool isOver=true;//判断是否结束移动

void Start(){

}

void Update(){

if(Input.GetMouseButtonDown(0)){

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

RaycasrHit hitInfo=new RaycastHit();

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

if(hitInfo.collider.name="Plane"){

target=hitInfo.point;

target.y=0.5f;

isOver=false;

}

}

}

MoveTo(target);

}

private void MoveTo(Vector3 tar){

if(!isOver){

Vector3 v1=tar-transform.position;

transform.position+=v1.normalized*speed*Time.deltaTime;

if(Vector3.Distance(tar,transform.position)<=0.1f){

isOver=true;

transform.position=tar;

}

}

}

}


Input.GetMouseButtonDown(0):鼠标左键按下,按键系统。

Ray ray:定义一条射线。 

Ray Camera.main.ScreenPointToRay(Vector3 pos)返回一条射线Ray从摄像机到屏幕指定一个点。

        Ray Camera.mainViewportPointToRay(Vector3 pos)返回一条射线Ray从摄像机到视口指定的一个点

RaycastHit :光线投射碰撞信息

RaycastHit[ ]

bool Physics.Raycast(Vector3 origin,Vector3 direction,float distance,int layerMask)://当光线投射与任何碰撞器交叉时为真,否则为假

RaycastAll

hitInfo.collider.name=="Plane"//碰撞的名字是Plane

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值