码迷,mamicode.com
首页 > 编程语言 > 详细

Unity中射线碰撞试验分享:

时间:2015-03-15 09:38:29      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:


Physics.Raycast:光线投射

 

参数:

origin:射线起始点

direction:射线方向

distance:射线长度

layerMask:只选定Layermask层内的碰撞器,其它层内碰撞器忽略。

Returns

bool - True when the ray intersects any collider,otherwise false.

当光线投射与任何碰撞器交叉时为真,否则为假。

 

下面通过实现这个小例子来试验一下:点击哪里就向哪里移动

 技术分享

using UnityEngine;
using System.Collections;

public class capsule : MonoBehaviour {

    public CharacterController cc;
    public float speed;
    public Camera camera;
    public Vector3 targetPosition;
    void Start () {
        targetPosition=this.transform.position;//把初始的位置赋值给当前坐标
        cc=this.gameObject.GetComponent<CharacterController>();
    }
//定义射线方法:
    void getHitPoint(){
        Ray ray;//创建一个新的射线
        RaycastHit hit;//光线投射碰撞qi
        if(Input.GetMouseButtonDown(0)){//如果我点击了屏幕之后才能触发射线
            ray=camera.ScreenPointToRay(Input.mousePosition);//屏幕位置转射线
            if(Physics.Raycast(ray,out hit,100)){//光线投射--当光线投射与任何碰撞器交叉时为真,100射线距离
//                Debug.Log (hit.point);

                if(hit.collider.gameObject.name=="Terrain"){
                    targetPosition=hit.point;
                    //Debug.Log(targetPosition);
                }
            }
        }
    }
    void walk(){
        Vector3 v= Vector3.Normalize(targetPosition-this.transform.position);
        cc.SimpleMove(v*speed*Time.deltaTime);//简单移动方法。
    }

    void Update () {
//        Vector3 v=new Vector3(0,0,10*speed*Time.deltaTime);
//        if(Input.GetKey(KeyCode.A)){
//            cc.SimpleMove(v);
//        }

        walk();
        getHitPoint();
    }
}

Unity中射线碰撞试验分享:

标签:

原文地址:http://blog.csdn.net/wy_boke/article/details/44261433

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!