unity 蓄力小球朝鼠标点击方向蓄力运动

3675人阅读
Unity3D学习笔记(10)
& & & & &游戏中经常会有鼠标移动到某个对象上来拾取它的功能,我们可以用Unity3D中的射线Ray实现这一效果。原理是在我们鼠标的位置,从屏幕射出一条射向世界空间的射线,当这条射线碰撞到我们需要拾取的对象时,我们就销毁对象,把它添加到我们的背包中。
& & & & &我们来做一个简单的Demo,我们在场景中添加一个方块Cube,一个小球Sphere,当我们鼠标放在方块上时没有任何反应,而当我们把鼠标放在小球上时,小球会消失。
& & & & 新建一个项目,我们命名为“RayTest”,然后在场景中新建一个小球,方块,和添加灯光,最终结果如图所示:
& & & & & & & &&
& & & & &新建一个C#脚本文件,重命名为“rayScript”,具体代码如下所示:
using UnityE
using System.C
public class rayScript : MonoBehaviour {
// Use this for initialization
void Start () {
// Update is called once per frame
void Update () {
//创建一条射线,产生的射线是在世界空间中,从相机的近裁剪面开始并穿过屏幕position(x,y)像素坐标(position.z被忽略)
Ray ray = camera.ScreenPointToRay(Input.mousePosition);
//RaycastHit是一个结构体对象,用来储存射线返回的信息
//如果射线碰撞到对象,把返回信息储存到hit中
if (Physics.Raycast(ray, out hit))
//如果碰撞的对象是小球,则销毁它
if (hit.transform.gameObject.name == &Sphere&)
Destroy(hit.transform.gameObject);
& & & & 运行,我们可以看到当鼠标放在小球上时,小球消失了。
附上项目源码下载地址:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:154422次
积分:2308
积分:2308
排名:第16250名
原创:76篇
评论:69条
(1)(1)(12)(9)(10)(25)(18)(5)U3D基础(3)
新建一个plane作为地面Land,一个小球。给小球增加Rigidbody组件,设置一个阻力值Drag,此处我们设为1。
然后给小球增加一个script,此处为moveController.cs
using UnityE
using System.C
public class moveController : MonoBehaviour {
// 小球运动速度
Vector3 targetP // 目标位置
void Awake () {
targetPos = transform.
void Update () {
GetTargetPos ();
// 判断小球有没有到达目标点
if (Vector3.Distance (targetPos, transform.position) &= 0.05f) {
// 使小球朝向目标点
transform.LookAt (targetPos);
// 使小球运动
transform.Translate (Vector3.forward * speed * Time.deltaTime);
// 获取目标点
void GetTargetPos () {
// 1. 监听鼠标点击事件
if (Input.GetMouseButtonDown (0)) {
// 2. 获取从摄像机向鼠标当前位置发出的射线
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
// 3. 创建一个用于保存碰撞信息的变量
RaycastHit hitInfo = new RaycastHit ();
// 4. 调用函数发射射线检测有没有碰撞到游戏对象
if (Physics.Raycast (ray, out hitInfo)) {
// 5. 判断发生碰撞的游戏对象是不是地板
if (hitInfo.collider.gameObject.name == &Land&) {
// 6. 如果是地板,获取碰撞点的坐标
targetPos = hitInfo.
// 修改目标点的 Y 值
targetPos.y = transform.position.y;
Debug.Log (&targetPos& + targetPos);
给小球设置一个滚动到速度Speed。
效果为点击绿地上点一点,小球会移动到鼠标点击点。
在游戏中可以实现游戏人物随着鼠标移动
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:23744次
排名:千里之外
原创:67篇
(1)(18)(2)(14)(8)(11)(10)(2)(5)安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&注册花火通行证,没有账号
智能硬件分类
&>&&>& > 正文
分享文章到微信
关注花火网微信公众号
Unity3D摄像机跟随小球移动而不旋转如何设置  1、如图,我们已经给小球添加了移动的脚本,小球是Sphere,现在想实现的是让摄像机MainCamera跟随小球一起运动。  2、我们先来看看上面说的不可行的方法:如图,直接将&Main &Camera&拖动到&Sphere&的子目录,即让摄像机成为小球的子物体,这样,两个对象就可以一起运动了,那么我们来看看到底可不可行。  3、我们记录一开始两物体的位置,此时让小球向右移动,此时,我们从这个视角看去,的确是一起运动了,但是,这不是我们在  游戏  里面看到得视角,我们看到的是摄像机的视角。  4、运行游戏后,我们可以看到,画面是&天旋地转&的。所以,这种方法对于自身还在运动的物体来时,是不可行的。那么下来我们说说正确的做法。  正确的方法:  1、 &我们要实现的是让相机跟随物体一起移动,其实就是让相机和小球的相对位置不变即可。这里我们需要使用代码来控制两个对象之间的相对位置,使其保持不变。  首先,在MainCamera里面创建一个C# 脚本。如图所示,点击MainCamera,在右边属性栏最下方,选择 &AddComponent。然后,在弹出的选项里拉到最下方,选择NewScript,然后创建一个C#脚本,命名为 &Move。此时可以看到,我们新添加的一个C#脚本。  电脑常识  电脑基础  系统常识  硬件知识  软件知识  安全知识  文件知识  电脑组装  电脑技术  电脑技巧  电脑教程  网络技术  网站电商  平面设计  网页设计  编程开发
加载更多新闻
Copyright @ 2015-, All Rights Reserved. 版权所有 花火网您所在的位置: &
Unity3D 游戏引擎之平面小球重力感应详解
Unity3D 游戏引擎之平面小球重力感应详解
先看一看Unity3D 在iPhone上的重力分布图。如下图所示我们可以清晰的看出X Y Z 三个方向的重力分量。Unity3D中重量的取值范围是 -1.0 到 +1.0.
&手机重力感应应该对大多数开发者并不陌生,在新一代智能手机Android& IOS WP7 很多游戏都是使用手机自带重力感应功能制作的,强大的Unity3D 游戏引擎当然对这个也是完美支持的,今天由MOMO带大家学习3D 世界中的手机重力感应。本章我们的目标是实现一个小球在屏幕中通过摇晃手机重力加速度让小球在屏幕中移动。以前的Android系列开发文章中貌似也写过,其实原理都是一样一样一样的,废话不多说了。哇咔咔~~
先看一看Unity3D 在iPhone上的重力分布图。如下图所示我们可以清晰的看出X Y Z 三个方向的重力分量。Unity3D中重量的取值范围是 -1.0 到 +1.0.
X轴:home按键在下手机面朝天向右旋转90度重力分量为+1.0& 向左旋转90度重力分量为-1.0
Y轴:home按键在上手机背朝自己重力分量为+1.0 home按键在下手机面朝自己重力分量为-1.0
Z轴:手机面朝地面重力分量为+1.0 手机面朝天空重力分量为-1.0
OK! 有了这三组重要的数值我们就可以控制手机重力感应啦,紧接着我们看看小球重力感应的这个游戏小例子。
498)this.width=498;' onmousewheel = 'javascript:return big(this)' alt="" src="/files/uploadimg/2460.gif" />
打开Unity3D 我们将给摄像机绑定一个脚本,用来响应用户控制手机来重力感应游戏小球的移动。
在Input 这个重要的类中,Unity3D 帮我们封装了重力加速的方法。
Input.acceleration.x; 重力感应X轴的重力分量
Input.acceleration.y; 重力感应Y轴的重力分量
Input.acceleration.z; 重力感应Z轴的重力分量
[代码]js代码:
//小球的贴图&
var round : Texture2D;&&&
//小球在屏幕中显示的X Y坐标&
var x = 0;&
var y = 0;&
//小球屏幕显示的最大 X Y 范围&
var cross_x = 0;&
var cross_y = 0;&
function Start(){&
&&&&//初始化赋值&
&&&&cross_x = Screen.width -& round.&&&
&&&&cross_y = Screen.height -& round.&&&&&
function OnGUI () {&
&&&&//整体显示 x y z 重力感应的重力分量&
&&&&GUI.Label(Rect(0,0,480,100),&position is & + Input.acceleration);&
&&&&//绘制小球&
&&&&GUI.DrawTexture(Rect(x,y,256,256),round);&&&&
function Update(){&
&&&&//根据重力分量修改小球的位置这里乘以30的意思是让小球移动的快一些&
&&&&x += Input.acceleration.x * 30;&
&&&&y += -Input.acceleration.y * 30;&&&&&
&&&&//避免小球超出屏幕&
&&&&if(x & 0){&&&
&&&&&&&&x = 0;&&&
&&&&}else if(x & cross_x){&&&
&&&&&&&&x = cross_x;&&&
&&&&if(y & 0){&&&
&&&&&&&&y = 0;&&&
&&&&}else if(y & cross_y){&&&
&&&&&&&&y = cross_y;&&&
重力感应的图片不太好截取,我们看看下面的示意图,小球可以根据我的手机的重力而移动。屏幕左上方正常打印手机当前X Y Z 三个方向的重力分量。
498)this.width=498;' onmousewheel = 'javascript:return big(this)' alt="" src="/files/uploadimg/2461.gif" />
说到这里,可能会有盆友问我如何为3D的物体添加重力感应?其实方法是一样的,因为都是一样的道理,比如我可以给一个模型绑定一个这样的脚本,通过 Input.acceleration去拿到当前手机的重力感应分量,然后根据这个分量去计算当前模型的位置。细心的盆友你们可以试一试,其实很简单的哇咔咔~~
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&的更多文章
本书是一部应运而生的实用指南,讲述了如何构建出能在Apple Stor
网友评论TOP5
随着云计算、物联网、大数据、移动互联网的大发展,你应该知道这些。
AppCan平台提供了众多原生扩展功能,通过这些扩展功能
由于HTML5、CSS3和JS的能力在不同终端和平台上的支持
由于HTML5、CSS3和JS的能力在不同终端和平台上的支持
这并不是一本传统的技术专著,因为它并没有包含一行代码,而更像是一部技术评论。作者通过幽默诙谐而又不失辛辣的语言,从程序员
Windows Phone专家
Android开发专家
51CTO旗下网站}

我要回帖

更多关于 郭德纲蓄力中 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信