unity3d小球滚动 - CSDN
  • Unity3d 设置小球为刚体控制滚动

    千次阅读 2018-07-08 20:50:39
    新建一个cube 作为地面。新建一个Sphere点击add component 选择刚体新建脚本 Sphere ... using System.Collections.Generic; using UnityEngine; public class Shpere : MonoBehaviour { private Rigidbody rd;...

    新建一个cube 作为地面。

    新建一个Sphere

    点击add component 选择刚体


    新建脚本 Sphere 

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Shpere : MonoBehaviour {
    
        private Rigidbody rd;//刚体变量
        private int force = 5;//力量
    	// Use this for initialization
    	void Start () {
            rd = GetComponent<Rigidbody>();
    	}
    	
    	// Update is called once per frame
    	void Update () {
            float h = Input.GetAxis("Horizontal");
            float v = Input.GetAxis("Vertical");
            rd.AddForce(new Vector3(h, 0, v)*5);
    	}
      
        
    }

    附加到sphere 上就可以控制小球运动了。根据方向键控制。


    展开全文
  • [unity] unity学习——滚球游戏

    万次阅读 2016-07-03 17:07:05
    通过制作滚球游戏进一步熟悉unity的操作以及游戏元素的设计。 二、游戏制作过程 1、创建3D工程——Roll a Ball 2、保存游戏场景 file——save scence,保存游戏场景,保存在工程目录的_scence目录中,命名为...

    一、学习内容

    滚球游戏是这样的,一个四面有墙的场景,里面有球和小方块,控制球去吃方块,吃完方块就游戏结束。
    通过制作滚球游戏进一步熟悉unity的操作以及游戏元素的设计。

    二、游戏制作过程

    1、创建3D工程——Roll a Ball

    2、保存游戏场景

    file——save scence,保存游戏场景,保存在工程目录的_scence目录中,命名为minigame

    3、创建底板、小球元素

    在Hierarchy视图中创建Plane元素作为底板,命名为Ground。

    大小和规模选择reset的默认属性就行。



    在Hierarchy视图中创建Sphere元素作为小球,命名为Player,同样reset,再把position的Y设为0.5,这样整个球正好在底板上面。
    为小球添加Rigidbody组件,质量mass设为1,勾选重力作用use Gravity。

    4、为地板着色

    在project视图新建一个Material文件夹,并在里面创建一个material元素,命名为background,选择颜色为深色

    拖动background到Ground地板上进行染色。

    5、移动小球

    为Player添加脚本组件new script,命名为PlayeControler。先添加三个内容:
    小球移动速度speed   ,  Rigidbody加载Rigidbody组件,  获取输入控制移动input

    using UnityEngine;
    using System.Collections;
    
    public class PlayerController : MonoBehaviour {
    
        public float speed;
    
        private Rigidbody rb;
    
        void Start ()
        {
            rb = GetComponent<Rigidbody>();
        }
    
        void FixedUpdate ()
        {
            float moveHorizontal = Input.GetAxis ("Horizontal");
            float moveVertical = Input.GetAxis ("Vertical");
            Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
            rb.AddForce (movement * speed);
        }
    }
    其中上一篇已经用过的Input.GetAxis获取位移量,参数为“Horizontal”为横向,参数为“Vertical”为纵向。
    与物理特性相关的操作应该放在函数FixedUpdate中,而不是Update中,Update多用于处理用户输入。
    上一篇也已经用过,AddForce移动小球。
    在组件属性面板中修改speed的值,运行游戏就可以控制小球移动了。

    6、摄像机控制

    小知识:将main Camera移动到player下面,摄像机就好跟随小球移动。
    上一篇也学会用标准的unity脚本来控制摄像机跟随游戏元素。
    这里,我们自己写脚本控制摄像机移动,对main Camera添加C#脚本元素:
    using UnityEngine;
    using System.Collections;
    
    public class CameraControler : MonoBehaviour {
    
        public GameObject player;
    
        private Vector3 offset;
    
        void Start()
        {
            offset = transform.position - player.transform.position;
        }
    
        void LateUpdate()
        {
            transform.position = player.transform.position + offset;
        }
    }
    


    GameObject创建对象存储Player元素(在组件属性面板会有player的属性框,将Player元素拖到这个属性框中,就将player元素与GameObject绑定起来了),计算开始摄像机与player的距离,然后一直保持这个距离。这样就做到了摄像机一直跟随小球了。

    7、添加围墙

    GameObject菜单栏中,选择Create Empty ,命名为Walls
    再创建一个Cube元素,命名为West Wall,将West Wall拖放到Walls中,作为Walls的子元素。
    通过Edit菜单的Duplicate或快捷键 Ctrl+D复制出三个West Wall元素,并命名为East Wall、South Wall、North Wall,改变其大小位置,正好放在地板的四面。这里我贴出我的四面墙的transform面板





    至此完成围墙元素。运行游戏会发现小球只能在围墙内活动了。

    8、添加——被采集的小方块

    Hierarchy中添加Cube元素,命名为Pick Up,调整期transform属性,让其悬空立起来。transform面板为


    然后,为pick Up添加c#脚本元素,命名为Rotator,让其自动自转起来,
    using UnityEngine;
    using System.Collections;
    
    public class Rotator : MonoBehaviour {
    
        void Update()
        {
            transform.Rotate(new Vector3(15, 30, 45) * Time.deltaTime);
        }
    }
    


    其中transform.Rotate是实现自转的函数,完成后运行游戏发现小方块已经能自动旋转。
    因为要使用很多的Pick Up方块,所以在project面板中创建一个文件夹prefabs,把Pick Up拖进prefebs文件夹中,方便以后对所有Pick Up元素进行统一操作。
    然后再Hierarchy视图中创建Empty元素,命名为Pick Ups,把Pick Up拖进Pick Ups中,同样Ctrl+D复制Pick Ups元素,总共12个Pick Up元素。然后水平移动这些元素形成一个好看的图案,我这里随意摆了个圆形。

    接下来为Pick Up进行染色,和第四步一样,project视图中添加Materia元素,命名为Pick Up,然后选择金黄色(或者你觉得好看的颜色)
    然后把Pick Up的Materia元素拖到Prefabs的Pick Up中,这也就是上面红色字体的目的,这样统一为所有pick Up元素进行染色。
    至此完成所有采集块的制作。

    9、实现小块采集

    小球的运动实现了,采集块也制作完成了,下面是当小球碰撞到采集块的时候,采集块消失。
    这一部分是在小球的脚本中完成,前面已经建立了PlayerControler脚本,编辑这个脚本,添加碰撞函数(这里用的是OnTriggerEnter函数),
    void OnTriggerEnter(Collider other) 
        {
            if (other.gameObject.CompareTag ("Pick Up"))
            {
                other.gameObject.SetActive (false);
            }
        }


    函数就是当碰撞的元素的Tag是Pick Up时,让这个元素的状态设为false。这个Tag需要进行设置,点击project视图中的Prefabs文件夹下的Pick Up,它的Inspector视图中会有Tag属性,点击add tag,添加Pick Up,并将Tag设为Pick Up即可。


    这时运行游戏发现采集块碰撞了不能消失,不急~上图中Inspector视图的Box Collider有个Is Trigger勾选项,将其勾选。再运行游戏,发现一家可以实现小块的采集了。

    10、显示分数,及游戏结束

    每采集一个元素,就积一分。元素采集完,游戏结束,显示you win!
    编辑PlayerControler,添加count元素进行计分。
    在Hierarchy视图中添加UI——Text,命名为Count Text,发现视图中多了Canvas,新建的text就在这个目录下。
    text的Inspector面板中,有个color选择字体颜色,这里我设为白色。Rect Transform修改text的位置。
    同样的方式创建一个Text元素,命名WinText,用来显示游戏获胜时的提示。

    接下来就是修改PlayerControler脚本,使分数显示在count text上,脚本要添加using UnityEngine.UI;才能使用text组件。
    在脚本中创建Text对象:Public Text CountText;    
       Public Text WinText;    
    并在Start函数中进行初始化,每积一分时,CountText内容改变,count大于12时,游戏结束,WinText显示You Win!
    PlayerControler的完整代码如下:
    using UnityEngine;
    using UnityEngine.UI;
    using System.Collections;
    
    public class PlayerControler : MonoBehaviour {
        private Rigidbody rb;
        private int count;
        public float speed;
        public Text countText;
        public Text winText;
        void Start()
        {
            rb = GetComponent<Rigidbody>();
            count = 0;
            SetCountText();
            winText.text = "";
        }
        void FixedUpdate()
        {
            float moveHorizontal = Input.GetAxis("Horizontal");
            float moveVertical = Input.GetAxis("Vertical");
            Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
            rb.AddForce(movement *speed);
        }
        void OnTriggerEnter(Collider other)
        {
            if (other.gameObject.CompareTag("Pick Up"))
            {
                other.gameObject.SetActive(false);
                count++;
                SetCountText();
            }
        }
        void SetCountText()
        {
            countText.text = "Count: " + count.ToString();
            if (count >= 12)
                winText.text = "You Win!";
        }
    }
    

    为了方便CountText的显示,写SetCountText方便调用CountText对象。
    至此游戏制作结束,积分、获胜显示都有了。

    11、导出游戏

    file菜单栏的Build Setting选项,把minigame那个scence拖到Scenes In Build,根据你的环境选择平台,直接build即可。


    三、总结

    这个游戏的制作继续对简单的物体运动进行练习,以及上色练习,摄像机的控制,同样式元素的统一操作,元素直接的碰撞处理,text的初使用。

    展开全文
  • unity滚动小球

    2020-03-22 20:23:32
    导入资源包 搭建初始场景 创建黄色方块转动 转动代码: public class RotatePickUp : MonoBehaviour { // Use this for initialization void Start () { ... // Update is called once per frame ...

    导入资源包

    在这里插入图片描述

    搭建初始场景

    在这里插入图片描述

    创建黄色方块转动

    在这里插入图片描述
    转动代码:

    public class RotatePickUp : MonoBehaviour {
    
    	// Use this for initialization
    	void Start () {
    		
    	}
    	
    	// Update is called once per frame
    	void Update () {
    		this.transform.Rotate(new Vector3(15,30,45)*Time.deltaTime);
    	}
    }
    
    

    创建黄色滚动圆环

    step1:创建黄色方块并放入materials->Prefabs

    step2:

    自动生成12个围绕sphere的方块,外加摄像机自动跟随sphere。

    代码拖到main camera上面

    public class CameraController : MonoBehaviour {
    	public GameObject player;
    	private Vector3 offset;
    	public GameObject pickupPfb;
    	private GameObject[] obj1;
    	private int objCount = 0;
    
    	// Use this for initialization
    	void Start () {
    		offset = this.transform.position - player.transform.position;
    		obj1 = new GameObject[12];
    		for (objCount = 0;objCount < 12 ;objCount++){
    			obj1[objCount] = GameObject.Instantiate(pickupPfb);
    			obj1[objCount].name = "pickup" + objCount.ToString();
    			obj1[objCount].transform.position = new Vector3(4*Mathf.Sin(Mathf.PI/6*objCount),1,4*Mathf.Cos(Mathf.PI/6*objCount));
    		}
    
    	}
    	void LateUpdate() {
    		this.transform.position= player.transform.position + offset;
    	}
    	// Update is called once per frame
    	void Update () {
    		
    	}
    }
    
    

    在这里插入图片描述

    使sphere成为玩家

    在工具栏创建文字

    将以下代码拖到白色小球上

    public class PlayerController : MonoBehaviour {
    
    	public float speed;
    	private Rigidbody rb;
    	public Text countText;
    	public Text winText;
    	private int count;
    
    	// Use this for initialization
    	void Start () {
    		rb = GetComponent<Rigidbody>();
    		count = 0;
    		winText.text = "";
    		SetCountTest();
    	}
    	
    	void FixedUpdate() {
    		float moveHorizontal = Input.GetAxis("Horizontal");
    		float  moveVertical = Input.GetAxis("Vertical");
    		Vector3 movement = new Vector3(moveHorizontal,0,moveVertical);
    		rb.AddForce(movement * speed);
    	}
    
    	void OnTriggerEnter(Collider other) {
    		if(other.gameObject.CompareTag("PickUp")){
    			other.gameObject.SetActive(false);
    			count++;
    			SetCountTest();
    		}
    	}
    
    	void SetCountTest(){
    		countText.text = "Count:" + count.ToString();
    		if(count >= 12){
    			winText.text = "You Win";
    		}
    	}
    	// Update is called once per frame
    	void Update () {
    		
    	}
    }
    

    在这里插入图片描述

    展开全文
  • Unity3d 5.x 滚动小球 完整项目 demo 亲测用Unity3D5.5.1可以打开
  • unity3d小球移动

    2020-07-30 23:31:53
    使用unity3D的实现小球的移动通过键盘控制,很基础的学习资料
  • using UnityEngine; using System.Collections; public class BallControl : MonoBehaviour {  public float ...//小球运动的速率  private Vector3 horizontalMovement;//小球的水平运动  //这里理
    using UnityEngine;
    using System.Collections;
    public class BallControl : MonoBehaviour
    {
        public float movementSpeed = 6.0f;//小球运动的速率
        private Vector3 horizontalMovement;//小球的水平运动
        //这里理解为小球的前后运动
        private Vector3 verticalMovement;
        void Update()
        {
            horizontalMovement = Input.GetAxis("Horizontal") * Vector3.right * movementSpeed;
            verticalMovement = Input.GetAxis("Vertical") * Vector3.forward * movementSpeed;
            //小球的运动(水平运动与前后运动的向量和)
            Vector3 movement = horizontalMovement + verticalMovement;
            //为小球施加力
            rigidbody.AddForce(movement, ForceMode.Force);
        }
        void OnTriggerEnter(Collider other)
        {
            //判断小球是否与钻石对象碰撞
            if (other.tag == "Pickup")
            {
                //如果碰撞了,说明找到了钻石
                MarbleGameManager.SP.FoundGem();
    CrazyBallManager.CB.FoundGem();
                //销毁对象
                Destroy(other.gameObject);
            }
            else
            {
                //与其他对象的碰撞
            }
        }
    }
    展开全文
  • 创建碰撞小立方体 新建Cube 我们在游戏场地中加入一些旋转的小方块儿,然后由球来碰撞这些小方块儿,碰撞之后就加一定的分数。 很简单地,创建一个Cube,并命名为PickUp,使其Reset,然后我们调整一下它的Rotation和...
  • Unity3D之平面小球重力感应详解

    千次阅读 2012-09-19 09:49:57
    本文参考自雨松MOMO的一篇文章,但是我自己试了试,发现结果有些不对、直接用他的代码我在真机上面运行,发现方向完全不对、 然后改了一下就没事了,主要就是该了两句话: x += -Input.acceleration.y * 30;...
  • 基于Unity3D的打砖块游戏开发

    千次阅读 2014-11-27 16:49:31
    开发平台:Unity3D 4.5.5f1 开发人员:王士溥、朱俊彰 计划: 开发时间:2周 功能简介:3D打砖块小游戏,实现基本功能,在游戏中可以通过鼠标调节camera视角以及位置——左键+移动鼠标-水平移动;右键+移动鼠标-...
  • Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。 Unity官网设计编写了一系列比较...
  • Unity3D】回合制游戏

    万次阅读 2017-08-17 23:23:56
    那么在Unity3D中怎么实现呢?下面用一个比较简单Unity3D的一对一回合制游戏来说明这个问题。其实也不难,关键是理清各个处理关系。 如下图所示,绿色代表玩家操控的主角,蓝色代表遇到的敌人,分别赋予大家100HP,...
  • Android开发学习之UnIty3D重力感应

    千次阅读 2013-12-09 09:32:52
    今天想和大家分享的是基于Unity3D的重力感应。首先简单地说一下Unity3DUnity3D是一个支持Windwos、Android、ios、Mac、WII等多平台类型游戏的开发环境,具备可视化的编辑窗口,可以快捷、方便地对游戏场景进行编辑...
  • 游戏中的主场景是一个四面有墙的场景,桌面上放置有可以滚动小球和多个小方块,游戏开始后,玩家通过键盘控制球去吃方块,游戏得分会随着方块的减少而增长,当小球吃完全部的方块,得分达到最高,此时游戏结束。...
  • unity3d游戏物体跟着鼠标方向移动

    万次阅读 2012-04-18 09:47:57
    思路:把鼠标的坐标转化成世界坐标(鼠标默认是屏幕坐标),然后当点击鼠标时,物体将朝着鼠标的世界坐标方向移动。 如果你看到这的话,最好先别往下看,自己按着这个思路试做一下,实在不行再看看我的哈~~~~ ...
  • Unity3D中上斜坡会下滑的问题

    千次阅读 2017-07-26 21:08:34
    最近做HTC的项目,发现通过touchpad的触碰来移动物体会导致一个问题,斜坡角度比较大的时候,由于刚体的重力分力会导致运动区域下滑。 其实解决的方法很简单,就是判断刚体本身是否与地面相接触,如果地面与地面...
  • unity3d由小案例体会基础知识

    千次阅读 2018-01-14 22:53:01
    一般使用ISO更加方便,大佬都这么用不要问我为什么 创建材质,紫色材质的地面。新建文件夹取名Materials,右键create->material并命名为Ground ...创建一个场景,本案例只有一个场景命名为main ...
  • Unity3D 中物体移动脚本小记

    千次阅读 2017-02-01 22:57:56
    Uinty3D 中物体移动脚本小记最近几天在Unity官网看了官方提供的教程,自己也实验了一下,发现几个不同的项目中,脚本中对物体移动的实现方式并不相同。using UnityEngine;public class PlayerMoveController : ...
  • 126套Unity3D视频教程全集(包含入门、编程、特效、UI、动画、实战等等) 全集下载地址 http://urllink.cc/?v=c4ca1ryw [000001]《Unity ARPG网络游戏编程实践系列视频教程(游戏蛮牛第三季)》[25课时] [000002]...
  • 【学习】Unity3D滚球游戏 原理及实现

    千次阅读 2019-04-20 23:43:42
    转载:https://blogs.littlegenius.xin/2019/02/10/从滚球游戏初步体验Unity3D/ 从创建项目开始 创建一个项目 打开unity,在Projects中可以查看当前的本地项目或者云端项目,点击New project或者右上角的New都...
1 2 3 4 5 6
收藏数 101
精华内容 40
热门标签
关键字:

unity3d小球滚动