Unity3D学习笔记(二、小球滚动吃金币)
源码:键盘方向键操作小球滚动吃金币Unity3D源码
下篇:Unity3D学习笔记(三、小球跑酷)
一、颜色材质球创建
二、Plane平板创建
三、围墙
同理二,新建Cube,并调整属性,设立围墙
四、新建小球,并给小球赋予相关属性
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Ball : MonoBehaviour
{Rigidbody r;// Start is called before the first frame updatevoid Start(){r = GetComponent<Rigidbody>();}// Update is called once per framevoid Update(){float x = Input.GetAxis("Horizontal");//让系统知道玩家按下了方向键的左右float z = Input.GetAxis("Vertical");//让系统知道玩家按下了方向键的前后Vector3 f = new Vector3(x,0,z);//把玩家的输入操作打包在一个力f里面r.AddForce(f*5);//给小球施加力f}
}
五,创建金币
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Coin : MonoBehaviour
{private void OnTriggerEnter(Collider other){Destroy(gameObject);//触碰的时候消失}
}
注:金币需要勾选属性 Is Trigger
六、运行
七:小结
物体增加 RigidBody 属性,代表给于物体刚体属性;
作用:添加了刚体组件的游戏物体,可以在物体系统的控制下来运动,刚体可接受外力和扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了刚体组件才能受到重力的影响,通过脚本为游戏对象添加的作用力以及通过NVIDIA物体引擎与其他的游戏对象发生互动的运算都需要游戏对象添加了刚体组件。没有刚体(RigidBody)组件,游戏对象之间可以相互穿透,不会产生碰撞。
C# 脚本中
声明对象 RigidBody ballRigidBody;
刚体对象实体化:ballRigidBody = new GetComponent<RigidBody>();
刚体对象施加力:ballRigidBody.addForce(****);
胶囊碰撞体(CapsuleCollider)
Is trigger 触发器:启用;
OnTriggerEnter (触发事件) | OnCollisionEnter(碰撞事件) |
碰撞双方必须是碰撞体(Conllision) | 碰撞双方必须是碰撞体(Conllision) |
碰撞双方其中一个必须是刚体(Rigidbody) | 碰撞的主动方必须是刚体(Rigidbody) |
碰撞双方其中一个碰撞体必须勾选IsTrigger选项 | 碰撞体不能勾选IsTrigger |
刚体的IsKinematic选项可以勾选也可以不勾选 | 刚体不能勾选IsKinematic |
Vector3是一个表示方向的类,既有大小也有方向
Vector3 v=new Vector3();
Vector3.up; 表示世界坐标系中y轴正方向上的单位向量。(0,1,0)
Vector3.down; 表示世界坐标系中y轴负方向上的单位向量。(0,-1,0)
Vector3.right; 表示世界坐标系中x轴正方向上的单位向量。(1,0,0)
Vector3.left; 表示世界坐标系中x轴负方向上的单位向量。(-1,0,0)
Vector3.forward; 表示世界坐标系中z轴正方向上的单位向量。(0,0,1)
Vector3.back; 表示世界坐标系中z轴负方向上的单位向量。(0,0,-1)
Vector3.zero; 表示世界坐标系中的原点。 (0,0,0)
也可以Vector3 v=new Vector3(x,y,z);<<<<创建对象时初始化
Input.GetAxis(string axisname)方法返回一个float 类型的数。范围在-1到1之间,如果获取的是鼠标的运动,则不再是-1到1之间,它会随你的鼠标速度变化。
1.触屏类:
1. MouseX 鼠标按着并沿着屏幕X轴方向滑动时触发
2. MouseY 鼠标按着并沿着屏幕Y轴方向滑动时触发
3. Mouse ScrollWheel 当鼠标滚动轮滚动时触发
2.键盘操作类:
1. Vertical 对应键盘上面的上下箭头,当按下上或下箭头时触发
2. Horizontal 对应键盘上面的左右箭头,当按下左或右箭头时触发
有关接收键盘信息的方法:
1、 public static bool GetKey(KeyCode key)
参数:key———键盘上的某个键。
返回值:bool———当通过名称指定的按键被用户按住时返回true
using UnityEngine;
using System.Collections;public class ExampleClass : MonoBehaviour
{void Update(){if (Input.GetKey(KeyCode.UpArrow)){print("up arrow key is held down");}if (Input.GetKey(KeyCode.DownArrow)){print("down arrow key is held down");}}
}
它还有一个重载方法: public static bool GetKey(string name),它的参数为字符串
using UnityEngine;
using System.Collections;public class ExampleClass : MonoBehaviour
{void Update(){if (Input.GetKey("up")){print("up arrow key is held down");}if (Input.GetKey("down")){print("down arrow key is held down");}}
}
2 、public static bool GetKeyDown(KeyCode key)
当用户按下指定名称的按键期间的帧返回true。
您需要从Update函数调用此函数,因为每个帧都会重置状态。在用户释放该键并再次按下该键之前,它不会返回true。
using UnityEngine;
using System.Collections;public class ExampleClass : MonoBehaviour
{void Update(){if (Input.GetKeyDown(KeyCode.Space)){print("space key was pressed");}}
}
重载方法:public static bool GetKeyDown(string name)
3 、 public static bool GetKeyUp(KeyCode key)
在用户释放给定名字的按键的那一帧返回true。
您需要从Update函数调用此函数,因为每个帧都会重置状态。在用户按下键并再次释放它之前,它不会返回true
using UnityEngine;public class Example : MonoBehaviour
{void Update(){if (Input.GetKeyUp(KeyCode.Space)){print("space key was released");}}
}
重载方法:public static bool GetKeyUp(string name)
4、物体随着按键的方向移动例子
void Update(){if (Input.GetKey(KeyCode.RightArrow) || Input.GetKey(KeyCode.D))dir = Vector2.right;else if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.A))dir = Vector2.left;else if (Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.S))dir = Vector2.down;else if (Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.W))dir = Vector2.up;}
Unity3D学习笔记(二、小球滚动吃金币)相关推荐
- Unity3d学习笔记-无限循环滚动背景(完整的商店广告牌组件)
在游戏项目中我们常常看到商城的广告牌,几张广告图片循环滚动,类似跑马灯,现在我将讨论一种实现方法,并提供一个管理类,大家可以直接使用. 实现原理:背景图片循环滚动的原理很简单:两张图片向一个方向移动, ...
- Unity3D 学习笔记4 —— UGUI+uLua游戏框架
Unity3D 学习笔记4 -- UGUI+uLua游戏框架 使用到的资料下载地址以及基础知识 框架讲解 拓展热更过程 在这里我们使用的是uLua/cstolua技术空间所以提供的UGUI+uLua的 ...
- 武汉大学-黄如花-信息检索课程学习笔记二
武汉大学-黄如花-信息检索课程学习笔记二 一.信息检索基本方法 1.布尔逻辑检索 2.临近检索 3.短语检索(精确检索) 4.截词检索 5.字段限制检索 6.区分大小写的检索 二.多种检索方法的综合运 ...
- Unity3D学习笔记12——渲染纹理
文章目录 1. 概述 2. 详论 3. 问题 1. 概述 在文章<Unity3D学习笔记11--后处理>中论述了后处理是帧缓存(Framebuffer)技术实现之一:而另外一个帧缓存技术实 ...
- qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)
原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...
- [转载]dorado学习笔记(二)
原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...
- PyTorch学习笔记(二)——回归
PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...
- tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数
tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报 分类: tensorflow(4) 目录(?)[+] 本笔记目的 ...
- Scapy学习笔记二
Scapy学习笔记二 Scapy Sniffer的用法: http://blog.csdn.net/qwertyupoiuytr/article/details/54670489 Scapy Snif ...
最新文章
- 技术图文:集合技术在求解算法题中的应用
- 系统设计:负载均衡(负载均衡算法、转发实现、session)
- 【图专题】三篇图神经网络中的图核函数:主要学习图的拓扑结构从而解决图分类问题...
- IOS 图片上传处理 图片压缩 图片处理
- Docker教程-仓库管理
- 一个数据包大小是多少k_算法交流: 6046 数据包的调度机制 【2.6基本算法之动态规划】...
- ZZULIOJ 1058: 求解不等式
- Java:键盘输入一个小数,输出其整数部分
- php mac windows,苹果电脑是windows系统吗
- 《东周列国志》第二十四回 盟召陵礼款楚大夫 会葵邱义戴周天子
- vscode打开txt文件乱码
- 计算机中1kb等于多少字节,在计算机中1kb等于多少字节
- Servlet作用域对象
- “万丈高楼平地起,编程学习要趁早”
- STM32G431控制窗帘电机-窗帘电机拆机
- charles基础使用
- 如何使用netsh advfirewall firewall而不是netsh firewall控制Windows Server 2008的防火墙行为
- 深度学习入门笔记(九):深度学习数据处理
- 被误以为外国佬开发的4款国产软件,早年默默无闻,如今声名鹊起
- 4-3 使用函数计算两个复数之积 (10分)