美文网首页
射线拓展

射线拓展

作者: 胤醚貔貅 | 来源:发表于2017-04-18 16:36 被阅读9次

    小球撞击砖块,小球和砖块都必须有碰撞体,当小球撞击到砖块之后,小球消失,在小球原本位置再生成一个小球,点击鼠标继续撞击,小球撞击砖块是被检测者,在小球类中声明委托和事件

    Bug :当鼠标点击的位置没有砖块时,没有碰撞事件发生,小球不会消失,也不会重新生成小球。

    小球脚本

    usingUnityEngine;

    usingSystem.Collections;

    publicclassSphereScript:MonoBehaviour{

    public delegate void DeadDelegate();

    public event DeadDelegate deadEvent;

    public bool flag;

    voidOnCollisionEnter(Collision other){

    if(!flag){

    if(other.gameObject.name.Contains("Cube")){

    flag=true;

    Invoke("Dead",1);//隔几秒调用方法

    }

    }

    }

    voidDead(){

    deadEvent();

    Destroy(gameObject);

    }

    }

    游戏控制脚本GameController

    usingUnityEngine;

    usingSystem.Collections;

    publicclassGameController:MonoBehaviour{

    public GameObject ballPrefabs;

    private GameObject ball;

    voidStart(){

    CreatBall();//游戏开始默认创建

    }

    voidUpdate(){

    RaycastHit hit;

    if(Input.GetMouseButtonDown(0)){

    if(Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hit)){

    //给球添加一个指向当前鼠标点击的点方向的力

    Vector3 forceDir=(hit.point-ball.transform.position).normalized;

    ball.GetComponent<Rigidbody>( ).AddForce(forceDir*20,ForceMode.Impulse);//瞬时力

    }

    }

    }

    voidCreatBall( ){

    ball=Instantiate(ballPrefabs,newVector3(0,0.4f,-6.58f),Quaternion.identity)asGameObject;

    ball.GetComponent<SphereScript>( ).deadEvent+=BallDead;//注册事件

    }

    voidBallDead( ){

    CreatBall( );

    }

    }

    相关文章

      网友评论

          本文标题:射线拓展

          本文链接:https://www.haomeiwen.com/subject/oufqzttx.html