zoukankan      html  css  js  c++  java
  • unity 3d孤岛求生案例代码解析

    这是第一人称控制器脚本,如果把摄像机放在胶囊体后面感觉就是第三人称了啊。

    #pragma strict
    
    var speed : float = 6.0;
    var jumpspeed: float = 8.0;
    var gravity :  float = 20.0;
    private var movedirection: Vector3 = Vector3.zero;
    private var grounded: boolean = false;
    private var qiqiu: boolean = false;
    
    function FixedUpdate () {
        qiqiu = chufaqiqiu.power_q;
        if (grounded){
            movedirection = Vector3(Input.GetAxis("Horizontal"),0,Input.GetAxis("Vertical"));
            movedirection = transform.TransformDirection(movedirection);
            movedirection *= speed;
            if (Input.GetButton("Jump")){
                movedirection.y = jumpspeed;
            }
            if (Input.GetKey(KeyCode.Q))
                transform.Rotate(0,-25*Time.deltaTime,0,Space.Self);
            if (Input.GetKey(KeyCode.E))
                transform.Rotate(0,25*Time.deltaTime,0,Space.Self);
            if (Input.GetKey(KeyCode.W) && qiqiu){
                movedirection.x *= 2;
                movedirection.z *= 2;
            }
    
        }
        movedirection.y -= gravity*Time.deltaTime;
        var controller: CharacterController = GetComponent(CharacterController);
        var flags = controller.Move(movedirection*Time.deltaTime);
        grounded = (flags & CollisionFlags.CollidedBelow) != 0;
        
            
    }
    @script RequireComponent(CharacterController)
    

    下面是碰撞器脚本

    #pragma strict
    @script RequireComponent(AudioSource)
    import UnityEngine.UI;
    
    var tong_sound: AudioClip;
    private var pzhuangtime: float = 0.0;
    private var pzhuang: boolean = false;
    private var pzhuangobject: GameObject;
    
    var pzhuang_time: float = 3.0;
    var wenzi: Text;
    
    /* guang xian tou she peng zhuang
    
    var hit: RaycastHit;
    if (Physics.Raycast(transform.position,transform.forward,hit,3)){
        if(hit.collider.gameObject.tag == "hudie"){
            var pzhuangobject: GameObject = hit.collider.gameObject;
            pzhuangobject.SendMessage("mou ge han shu");
    */
    function Update(){
        //peng zhuang ji shi.
        if(pzhuang){
            pzhuangtime += Time.deltaTime;
            print (pzhuangtime);
        }
    }
    
    
    
    function OnControllerColliderHit(hit: ControllerColliderHit){
        /*if(hit.gameObject.tag == "tong"){
            hit.gameObject.GetComponent.<AudioSource>().PlayOneShot(tong_sound);
        }*/
        //peng liang ci hu die cai hui xiao shi.
        if(hit.gameObject.tag == "hudie"){
            if(inventory.charge > 4){
                pzhuang = true;
                wenzi.text = "有本事,再碰我一下!";
            }
            else{
                wenzi.text = "想抓我,呵呵&……*"; 
                wenzi.enabled = true;
            }
            if(pzhuangtime > pzhuang_time){
                hit.gameObject.GetComponent.<Animation>().Play("fly");
                wenzi.text = "我可以飞的更高SB。";
                pzhuangtime = 0.0;
                pzhuang = false;
                inventory.charge++;
    
            }
        }
                   
        
    }
    

    下面是光线透射脚本。这脚本编译没错,但是功能没有实现。

    #pragma strict
    import UnityEngine.UI;
    
    function Updata(){
        var hit: RaycastHit;
        if (Physics.Raycast(transform.position,transform.forward,hit,3)){
            if(hit.collider.gameObject.tag == "tong"){
                var pzhuangobject: GameObject = hit.collider.gameObject;
                gameObject.Find("Canvas/tong").GetComponent(Text).text = " 这是一个桶 ";
            }
        }
    }
    

    下面是触发器合集。

    #pragma strict
    import UnityEngine.UI;
    
    
    static var power_t: boolean = false;
    private var pow_time: float = 0.0;
    private var speed: float = 0.0;
    private var wenzi_time: float = 0.0;
    var wenzi: Text;
    
    
    function Start(){
        
    }
    
    function Update(){
        if (power_t == true){
            pow_time += Time.deltaTime;
            gameObject.Find("FPControl").GetComponent(fpcyidong).jumpspeed = 16.0;
            
                
        }
        if (pow_time > 60.0){
            power_t = false;
            gameObject.Find("FPControl").GetComponent(fpcyidong).jumpspeed = 8.0;
            pow_time = 0.0;
        }
        if (wenzi.enabled){
            wenzi_time += Time.deltaTime;
            if (wenzi_time > 10.0){
                wenzi.enabled = false;
                wenzi_time = 0.0;
            }
        }
    }
    function OnTriggerEnter(col:Collider){
        if(col.gameObject.tag == "Player"){
            //transform.FindChild("door").SendMessage("dooropen");
            //col.gameObject.SendMessage("pickup");
            wenzi.text = "这是一个魔力桶,获得60秒超级跳!";
            power_t = true ;
            wenzi.enabled = true;
            //Destroy(gameObject.transform.parent.gameObject);
        }
        
    }
    
    #pragma strict
    import UnityEngine.UI;
    
    static var power_q: boolean = false;
    var wenzi: Text;
    function Start () {
    	
    }
    
    function OnTriggerEnter(col:Collider){
        if(col.gameObject.tag == "Player"){
            wenzi.text = "这是一个神奇的球,获得终身W冲刺";
            power_q = true ;
            wenzi.enabled = true;
        }
    }
    
    #pragma strict
    import UnityEngine.UI;
    var wenzi: Text;
    
    function OnTriggerEnter(col:Collider){
        if(col.gameObject.tag == "Player"){
            if(inventory.charge > 5){
                wenzi.text = "啊我再飞#¥!";
                Destroy(gameObject);
                Destroy(gameObject.Find("WaterBasicDaytime"));
                wenzi.enabled = true;
                
            }
    
        }
    
    #pragma strict
    
    import UnityEngine.UI;
    import UnityEngine.SceneManagement;
    
    var wenzi: Text;
    
    function OnTriggerEnter(col:Collider){
        if(col.gameObject.tag == "Player"){
            wenzi.text = "GAME OVER WISH TO NEXT TIME";
            Destroy(col.gameObject);
            wenzi.enabled = true;
            SceneManager.LoadScene("02");
        }
    }
    
    #pragma strict
    import UnityEngine.UI;
    
    var wenzi: Text;
    
    function OnTriggerEnter(col:Collider){
        if(col.gameObject.tag == "Player"){
            wenzi.text = "GAME OVER";
            Destroy(col.gameObject);
            wenzi.enabled = true;
        }
    }
    
    #pragma strict
    
    private var chufatime: float = 0.0;
    private var chufa: boolean = false;
    private var chufaobject: GameObject;
    
    var chufa_time: float = 3.0;
    var collecthudie: AudioClip;
    var wenzi : Text;
    
    function Update(){
        if(chufa){
            chufatime += Time.deltaTime;
            print(chufatime);
        }
    }
    	
    
    function OnTriggerEnter(col:Collider){
        if(col.gameObject.tag == "Player"){
            if (inventory.charge > 4){
                chufa = true;
            }
            else
                wenzi.text = "bang wo na jige xiang zi lai";
            if(chufatime > chufa_time){
                gameObject.GetComponent.<Animation>().Play("fly");
                AudioSource.PlayClipAtPoint(collecthudie,transform.position);
                chufatime = 0.0;
                chufa = false;
            }
        }
    }
    

    下面是旋转和变色脚本

    #pragma strict
    
    
    function Update () {
        transform.Rotate(0,100*Time.deltaTime,0);
    	
    }
    function OnTriggerEnter(col:Collider){
        if(col.gameObject.tag == "Player"){
            //transform.FindChild("door").SendMessage("dooropen");
            col.gameObject.SendMessage("pickup");
            Destroy(gameObject);
        }
    }
    
    #pragma strict
    var t:float = 0;
    
    function Start () {
    	
    }
    
    function Update () {
        t += Time.deltaTime;
        if (t <= 2){
            GetComponent.<Renderer>().material.color = Color.blue;
        }
        else if (t > 2 && t <= 5){
            GetComponent.<Renderer>().material.color = Color.red;
        }
        else{
            GetComponent.<Renderer>().material.color = Color.green;
        }
        if (t > 7)
            t = 0;
    
    
    }
    

    下面是收集物品脚本,另一内建数组var cms:Renderer[];    for(var co:Renderer in cms){co.material.color = Color.red;},给数组内所有对象的  渲染器组件  染色。

    #pragma strict
    import UnityEngine.UI;
    
    
    static var charge: int = 0;
    var collectSound: AudioClip;
    
    var powerui_raw: RawImage;
    var textures: Texture2D[];
    var wenzi: Text;
    
    function Start () {
        charge = 0;	
    }
    function pickup(){
        AudioSource.PlayClipAtPoint(collectSound,transform.position);
        charge++;
        wenzi.text = "哎呀获得一个箱子";
        powerui_raw.texture = textures[charge];
        wenzi.enabled = true;
        print (charge);
    
    }
    

    最后是游戏开始脚本

    #pragma strict
    import UnityEngine.SceneManagement;
    
    function OnGUI(){
        if(GUI.Button(Rect(180,100,60,30),"退出")){
            Application.Quit();
        }
        if(GUI.Button(Rect(280,100,60,30),"开始")){
            Application.LoadLevel("01");
        }
    
    }
    function Update(){
        if (Input.GetKey(KeyCode.Q))
            transform.Rotate(0,-25*Time.deltaTime,0,Space.Self);
        if (Input.GetKey(KeyCode.E))
            transform.Rotate(0,25*Time.deltaTime,0,Space.Self);
    }
    

    loadlevel是能用的但是过时了,用LoadScene

  • 相关阅读:
    CodeForces gym Nasta Rabbara lct
    bzoj 4025 二分图 lct
    CodeForces 785E Anton and Permutation
    bzoj 3669 魔法森林
    模板汇总——快读 fread
    bzoj2049 Cave 洞穴勘测 lct
    bzoj 2002 弹飞绵羊 lct裸题
    HDU 6394 Tree 分块 || lct
    HDU 6364 Ringland
    nyoj221_Tree_subsequent_traversal
  • 原文地址:https://www.cnblogs.com/white-L/p/6179762.html
Copyright © 2011-2022 走看看