美文网首页
Unity 第一个最简单的工程

Unity 第一个最简单的工程

作者: _小圆球_ | 来源:发表于2017-10-22 22:55 被阅读104次
    01.png
    初学Unity,第一个项目工程,如图所示,整个工程就是这么简单,一个场景,三个脚本文件(Test.cs是测试用的)。 02.png

    场景:

    demo01:场景的名称,用于加载游戏画面
    Main Camera:主相机,用于展示游戏场景中的游戏物体(`GameObject` 本示例中,相机跟随`Player`)
    Light:灯光,用于照亮场景
    Ground:场景中的地板
    Player:游戏猪脚(小圆球)
    Food:旋转的Cube
    
    03.png

    资源目录:

    Prefabs:预设文件夹,存放游戏预设,本工程主要用于存放复制属性相同多份的Food游戏物体
    Scenes:场景文件夹,存放游戏场景
    Scripts:脚本文件夹,存放c#脚本(用c#编写)
    
    04.png
    相机使用 FollowPlayer.cs 脚本
    FollowPlayer代码:
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class FollowPlayer : MonoBehaviour {
    
    // 游戏猪脚对象
    public GameObject player; 
    
    void Update () {
    
        // 获取主角的 position
        Vector3 player_position = player.GetComponent<Transform>().position; 
    
        // 设置相机的 position
        this.GetComponent<Transform> ().position = new Vector3 (player_position.x, player_position.y + 8.3f, player_position.z - 8.3f);
    }
    }
    
    05.png
    Food食物使用 Food.cs 脚本
    Food.cs代码
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Food : MonoBehaviour {
    
    void Update () {
    
        // 每秒旋转 60 度
        this.transform.Rotate (Vector3.up);
    }
    }
    
    06.png
    猪脚使用 Player.cs 脚本
    Player.cs代码
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Player : MonoBehaviour {
    
    // 记录吃掉几个 食物(Food)
    private int i = 0;
    
    void Update () {
    
        // Get the horizontal and vertical axis.
        // 获取横向和纵向坐标轴
        // By default they are mapped to the arrow keys.
        // 默认情况下他们关联到方向键上
        // The value is in the range -1 to 1
        // 值的范围是在-1到1之间
        float horizontal_move = Input.GetAxis ("Horizontal");
        float vertical_move   = Input.GetAxis ("Vertical");
    
        // 给猪脚施加力
        this.GetComponent<Rigidbody>().AddForce (new Vector3(horizontal_move, 0 , vertical_move)*10f);
    
    }
    
    // 当进入触发器
    void OnTriggerEnter(Collider other){
        
        Debug.Log (other.gameObject.name);
        if (other.gameObject.name == "Food") {// 如果碰到的是 食物 进行销毁 食物
    
            // 销毁 食物
            GameObject.Destroy (other.gameObject);
            i++;
            Debug.Log ("Eat a food");
            if (i==10) {
    
                Debug.Log ("Game win!");
            }
        }
    
    }
    }
    

    Input.GetAxis 获取轴<摘自Unity圣典>

    static function GetAxis (axisName : string) : float

    Description描述
    Returns the value of the virtual axis identified by axisName.
    根据坐标轴名称返回虚拟坐标系中的值。
    The value will be in the range -1...1 for keyboard and joystick input. If the axis is setup to be delta mouse movement, the mouse delta is multiplied by the axis sensitivity and the range is not -1...1.
    使用控制器和键盘输入时此值范围在-1到1之间。如果坐标轴设置为鼠标运动增量,鼠标增量乘以坐标轴灵敏度的范围将不是-1到1 。

    using UnityEngine;
    using System.Collections;
    
    public class example : MonoBehaviour{   
    
        public float speed = 10.0F; 
        public float rotationSpeed = 100.0F;    
    
        void Update() {     
    
            float translation = Input.GetAxis("Vertical") * speed;      
            float rotation = Input.GetAxis("Horizontal") * rotationSpeed;       
            translation *= Time.deltaTime;      
            rotation *= Time.deltaTime;     
            transform.Translate(0, 0, translation);     
            transform.Rotate(0, rotation, 0);   
    }
    }
    
    using UnityEngine;
    using System.Collections;
    
    public class example : MonoBehaviour {  
    
        public float horizontalSpeed = 2.0F;    
        public float verticalSpeed = 2.0F;  
    
    void Update() { 
        
        float h = horizontalSpeed * Input.GetAxis("Mouse X");       
        float v = verticalSpeed * Input.GetAxis("Mouse Y");     
        transform.Rotate(v, h, 0);  
    }
    }
    

    相关文章

      网友评论

          本文标题:Unity 第一个最简单的工程

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