• 网上有许多相关代码不过或多或少不正确的说. ...用作unity3d学习的笔记OO.... using UnityEngine; using System.Collections; public class BallControl : MonoBehaviour {  private int speed = 8

    网上有许多相关代码不过或多或少不正确的说.

    下面是修改过后正确的代码,只需将代码的脚本添加到有刚体上的组件即可.用作unity3d学习的笔记OO....

    不能使用this.transform.Translate(dir * speed);

    如果使用,物体将无法正常的旋转运动,比如球体的运动


    最好使用 FixedUpdate()进行物体的持续施力,否则不同的主机Update()每秒的帧数是不同的,联网的时候会导致不同的主机上物体的运动速度不一

    using UnityEngine;
    using System.Collections;


    public class BallMotivation : MonoBehaviour
    {
        private int speed = 12;


        void FixedUpdate()
        {
                 Vector3 dir = Vector3.zero;


            dir.x = Input.acceleration.x;


            dir.z = Input.acceleration.y;


            if (dir.sqrMagnitude > 1)//向量规范化
            {
                dir.Normalize();
            }
            dir *= Time.deltaTime;




            this.transform.GetComponent<Rigidbody>().AddForce(dir*speed, ForceMode.Impulse);
        }
        


    }








    展开全文
  • (二)3D重力感应 (一)2D重力感应 public class image : MonoBehaviour { public float speed = 10.0F;//方块移动速度 void Update() { Vector2 dir = Vector2.zero;//方块移动向量 dir.x...

    目录

     (一)2D重力感应

    (二)3D重力感应


     (一)2D重力感应

    public class image : MonoBehaviour
    {
        public float speed = 10.0F;//方块移动速度
        void Update()
        {
            Vector2  dir = Vector2.zero;//方块移动向量
    
            dir.x = Input.acceleration.x;
            dir.y = Input.acceleration.y;
    
            transform.Translate(dir * speed * Time.deltaTime);
        }
    }

    (二)3D重力感应

    public class Cube : MonoBehaviour
    {
        public float speed = 10.0F;//方块移动速度
        void Update()
        {
            Vector3 dir = Vector3.zero;//方块移动向量
    
            dir.x = Input.acceleration.x;
    
            transform.Translate(dir * speed * Time.deltaTime);
        }
    }

     

    展开全文
  • 本实例是一个简单的通过控制WASD和上下左右方向键分别控制吃小球的小游戏一:构建场景 1.创建一个Cube,通过设置它的Scale属性设置它的长宽高。 2.在它下面创建四个子对象,设置他们的 transform属性 调整的合适的...

    本实例是一个简单的通过控制WASD和上下左右方向键分别控制吃小球的小游戏

    一:构建场景
    1.创建一个Cube,通过设置它的Scale属性设置它的长宽高。
    2.在它下面创建四个子对象,设置他们的 transform属性 调整的合适的位置当做围墙。
    3.创建一个food游戏对象,把它设置为预制件(Prefab),设置食物的规格,copy出许多food对象随机放在cube上。
    (特别说明)Prefab:当游戏需要很多一样的游戏对象时,可以设置为预制件。通过改变一个预制件的属性,其他属于这个预制件的游戏对象也会一起改变。
    4.创建2个游戏对象 ball1 和 ball2 创建刚体。

    通过对Input里的Horizontal和Vertical还有自己创建的BallH,BallV分别用wasd和上下左右方向键控制两个小球
    这里写图片描述

    这里写图片描述

    这里写图片描述

    二:场景细节(某些特效的主要设置)
    1.粒子系统——Particle System
    start lifetime:控制粒子系统何时消失
    start Speed:控制粒子的发散速度
    Shape:可供为粒子选择各种样式
    radius:发散半径
    color over lifetime:颜色渐变
    renderer — render mode:粒子显示风格(平面、垂直、网状、球体)
    material:材质
    2.食物正方体按照直接坐标系的y轴选择

    这里写图片描述
    vertor3(0,1,0)中的1确定按照y轴旋转, space.world参数确定了其按照世界坐标系

    3.小球的拖尾特效 trail renderer
    这里写图片描述
    time:特效的显示时长
    Min Vertex Distance:拖尾最短距离
    width:拖尾的宽度(可以设置渐变曲线设置拖尾的形状)

    三:UI
    1.为界面添加文字

    GUI.Label(new Rect(100, 20, 100, 30), new GUIContent("红球Ball1分数"));

    2.为界面添加按钮

    GUI.Button(new Rect(20, 20, 20, 20), "开始");

    3.文字的字体和颜色

    GUIStyle style = new GUIStyle();
    style.fontSize = 20;
    GUI.color = Color.red;

    四:部分代码实现
    1.为两个小球添加tag分别进行控制移动

                if (ball.tag == "ball1")
                {
                    float h = Input.GetAxis("Horizontal");
                    float v = Input.GetAxis("Vertical");
                    ball.AddForce(new Vector3(h, 0, v) * speed);
                }
                if (ball.tag == "ball2")
                {
                    float h = Input.GetAxis("ballH");
                    float v = Input.GetAxis("ballV");
                    ball.AddForce(new Vector3(h, 0, v) * speed);
                }

    2.监测触发:当小球碰到食物时,食物消失,分数加一 (为预制件添加food为它的tag)

    int score = 0;
        private void OnTriggerEnter(Collider other)//用来检测 触发  
        {
            if (other.gameObject.tag == "food")
            {
                score++;
                Destroy(other.gameObject);
    
            }
        }
    展开全文
  • 首先看下手机中的加速度感应器的一般性描述(以安卓为例) 加速度传感器加速度传感器又叫G-sensor,返回x、y、z三轴的加速度数值。该数值包含地心引力的影响,单位是m/s^2。将手机平放在桌面上,x轴默认为0,y轴...

    首先看下手机中的加速度感应器的一般性描述(以安卓为例)

    加速度传感器
    加速度传感器又叫G-sensor,返回x、y、z三轴的加速度数值。
     该数值包含地心引力的影响,单位是m/s^2。
     将手机平放在桌面上,x轴默认为0,y轴默认0,z轴默认9.81。
     将手机朝下放在桌面上,z轴为-9.81。
     将手机向左倾斜,x轴为正值。
     将手机向右倾斜,x轴为负值。
     将手机向上倾斜,y轴为负值。
     将手机向下倾斜,y轴为正值。
     加速度传感器可能是最为成熟的一种mems产品,市场上的加速度传感器种类很多。
     手机中常用的加速度传感器有BOSCH(博世)的BMA系列,AMK的897X系列,ST的LIS3X系列等。
     这些传感器一般提供±2G至±16G的加速度测量范围,采用I2C或SPI接口和MCU相连,数据精度小于16bit。

     

    然后我们在unity中显示出来。核心代码为

    GUI.Box(new Rect(5, 5, 100, 20), String.Format("{0:0.000}", Input.acceleration.x)); 
    GUI.Box(new Rect(5, 30, 100, 20), String.Format("{0:0.000}", Input.acceleration.y)); 
    GUI.Box(new Rect(5, 55, 100, 20), String.Format("{0:0.000}", Input.acceleration.z));

    是的。我们主要读取Unity为我们封装好的API.直接调用就可以了。 Input.acceleration  [əkˌseləˈreɪʃn]

    下面将值具体化(参数 顺序为 x,y,z) 平面时前置摄像头均为再右边的状态

    手机屏幕朝上   水平放置的状态              (0,0,-1)

    手机屏幕朝下   水平放置的状态              (0,0,1)

    手机屏幕朝上   手机向右倾斜             (0++,0,-1++) 倾斜90度的状态为(1,0,0)

    手机屏幕朝上   手机向左倾斜               (0--,0,-1++)   倾斜90度的状态为(-1,0,0)

    手机屏幕朝上   手机向上倾斜(靠近身体一侧)       (0,0++,-1++) 倾斜90度的状态为(0,1,0)

    手机屏幕朝上   手机向下倾斜(靠近身体一侧)       (0,0--,-1++)   倾斜90度的状态为(0,-1,0)

     下面是例子

     

    下载地址 http://pan.baidu.com/s/1kTmWQZ9  密码 2f3l

    转载于:https://www.cnblogs.com/unitydong/p/4513323.html

    展开全文
  • 今天我们来学一下UnityD中预设Prefab的使用方法,首先来了解一下预设:在Unity3D项目中,Prefabs(预设)是一种可被重复使用的游戏对象。具有以下特点:  1. 它可以被置入多个场景中,也可以在一个场景中多次置入。...

           今天我们来学一下UnityD中预设Prefab的使用方法,首先来了解一下预设:Unity3D项目中,Prefabs(预设)是一种可被重复使用的游戏对象。具有以下特点:

            1.  它可以被置入多个场景中,也可以在一个场景中多次置入。

            2.  当你在一个场景中增加一个Prefabs,你就实例化了一个Prefabs。

            3.  所有Prefabs实例都是Prefab的克隆,所以如果实在运行中生成对象会有(Clone)的标记。

            4.  只要Prefabs原型发生改变,所有的Prefabs实例都会产生变化。

    如果需要创建一些想要重复使用的东西,如游戏中的子弹等,就应该使用Prefab了。下面介绍一下使用方法。

           新建一个工程,我们取名"Test",然后新建一个平面Plane,一个长方体Cube,一个球体Sphere。如下图所示:

                     

                我们要实现的效果是当小球落到平面上时,销毁小球,接着从小球的原始位置重新创建一个小球,使其下落,重复下去,使空中一直有小球下落。

               我们还要设置平面上的长方体的组件属性和小球的组件属性,分别如下所示:

                                     

             可以看到去掉了长方体Mesh Render组件的对勾,使其透明化,增加了Box Collider组件,使它接受碰撞,并在是否触发 Is Trigger上打了对勾;然后小球我们增加了重力感应组件Rigidbody,使其能够下落,然后增加了球体碰撞Sphere Collider。这里要注意的是碰撞双方不能都是Mesh Collider,否则检测不到碰撞。如果非要用两个Mesh Collider检测碰撞,则可勾选其中之一的Mesh Collider下的Convex属性。

            接下来创建预设Prefab,我们先在Project面板下新建一个文件夹“resources”,然后Create-->Prefab,重命名为“ball”,然后将Hierarchy下的ball对象拖拽到上面,可以发现它前面原本灰色的图标变蓝了。好了,最后让我们编写c#脚本代码,源代码如下:

    using UnityEngine;
    using System.Collections;
    
    public class script : MonoBehaviour {
    
        //定义小球预设
        private GameObject prefab;
    
    	// Use this for initialization
    	void Start () {
    	
    	}
    	
    	// Update is called once per frame
    	void Update () {
    	
    	}
        //触发进入检测函数
        void OnTriggerEnter(Collider col)
        {
         
            //注意此处第一个小球的名字为ball,而后来克隆的小球名字都为ball(Clone)
            if (col.gameObject.name == "ball" || col.gameObject.name == "ball(Clone)")
            {
                //销毁小球
                Destroy(col.gameObject);
            }
            //实例化小球预设,我们从resources文件夹下载入预设,注意预设资源必须放在
            //Assets目录下新建的resource文件夹,否则不识别
            prefab = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("ball"));
    
        }
    }

          将脚本拖放到cube对象上,运行游戏,效果如下:

                    

    最后附上项目资源下载地址:点此下载


    展开全文
  • Unity3D 物理引擎

    2013-07-10 20:34:12
    基本属性介绍: Mass:质量,数值越大物体下落得也就越快。尽量不要让数值其超过10,否则物理效果就...Use Gravity:是否使用重力。 Is kinematic:是否受物理的影响 Interpolate:设置图像差值。 Collision Det
  • 1.开始 在创建的项目文件夹中,各个子文件夹的作用: Assets:保存游戏所需资源。 Library:保存当前项目运行所需要的库。 ProjectSettings:保存项目设置信息。... 左上是层级(Hierarchy)面板,用于显示当前...
  • unity3d-Input介绍

    2017-10-19 10:06:41
    Input命名空间属于 UnityEngine描述以下描述我参考了官网解释,如有不...Unity Input—输入控制管理器:Edit->Project Setting->input 读取轴 在使用Input.GetAxis读取轴时,我们需要知道一些基本的知识: 1
  • unity3d-常用api

    2019-11-27 08:00:01
    简单手写记录了一下,字丑见谅。
  • 首先是对周围墙体、地面加上一个碰撞检测体:Msh Collider(主要作用就是为了是其他物体gameobject对象无穿越它) 再在上面加一个Navigation组件,起作用是:给地面添加一个自动寻找路径的基本设置设置, 对于...
  • 首先我这里先来总结Input类。 键盘控制类: 1,想要读取轴向使用Input.GetAxis方法获取下列默认轴: "Horizontal" 和"Vertical" 映射于控制杆、A、W、S、D和箭头键(方向键)。 "Mouse X" 和"Mouse Y" 映射于...
  • 当游戏显示3d场景及其UI的时候。玩家左右晃动手机的时候,UI界面会随之左右偏移。上下晃动的时候,3D场景会随之上下偏移。手机停止晃动的时候,如若偏移的UI或场景,停顿一会后自动恢复到初始默认位置。 分析 首先...
  • 目录 Mathf 类 Static Properties Static Methods ...下图是Unity 中各个类的继承关系: Mathf 类 点击这里进入官方文档。 Static Properties Mathf.Deg2Rad: public static float De...
  • Unity3D脚印5——输入

    2019-06-19 13:09:05
    Input使用这个类能够读取输入管理器设置的按键,以及访问移动设备的多点触控或加速感应数据。这里重点记录一下这几个东西的用法,鼠标,键盘,触摸,重力(陀螺仪)PS.按钮的名字:...
  • isKinematic属性是确定刚体是否接受动力学模拟,此影响不仅包括重力感应,还包括速度、阻力、质量等的物理模拟。   Mass - 单位为Kg, Drag - 阻力 为0表示没有阻力,infinity表示立即停止移动 Angular Drag...
  • Unity3D游戏开发-宣雨松 序 它支持JavaScript、C#、Boo三种脚本语言 JavaScript语言更适合初学者 双击游戏场景文件即可打开游戏工程 Scene.unity JavaScript语言编写的脚本中,使用UTF-8编码格式 C#语言...
  • Unity3d多人在线教程

    2016-09-30 16:10:30
    Unity多人在线教程 欢迎Unity用户,在这儿你将学习网络的使用。 希望你们过得愉快并且...这个教程的目的是展示Unity网络功能,我们将告诉你如何创建一个基本的以及用Master服务器/客户端,UDP服务器/客
  • unity3d-物理引擎

    2019-07-18 04:29:52
    简介 物理引擎就是在游戏中模拟真实的物理效果,比如,场景中有... 如果需要让模型感应物理引擎的效果,需要将刚体组件或角色控制器组件添加至该对象中。 刚体(Rigidbody) 刚体是一个非常重要的组件,新...
  • Unity3D脚印5—输入

    2015-02-08 16:08:32
    使用这个类能够读取输入管理器设置的按键,以及访问移动设备的多点触控或加速感应数据。   这里重点记录一下这几个东西的用法,鼠标,键盘,触摸,重力(陀螺仪)     鼠标:...
1 2 3 4 5
收藏数 100
精华内容 40