- 浏览: 26326 次
- 性别:
- 来自: 上海
文章分类
最新评论
原文 http://blog.csdn.net/qinyuanpei/article/details/23464439
[Unity3D]Unity3D游戏开发之史上最简单的鼠标点击控制人物走动实现
今天呢,我们来一起实现一个在RPG中游戏中十分常见的功能,通过鼠标点击屏幕来控制人物的走动。首先来说一下原理,当我们点击屏幕时,我们按照一定的方法,将屏幕上的二维坐标转化为三维坐标,然后我们从摄像机位置发射 一条经过该点的射线,则这条射线与大地平面的交点,就是我们的目标位置。那么确定了这个位置以后,我们需要做的就是让角色从原来的位置移动到这个位置,并在其间添加角色动画即可。对于角色移动的问题,如果复杂点的画我们可能要计算移动的方向向量,并针对起点和终点进行插值计算来实现,这里我们选择一种相对简单的办法,在Unity3D中,有一个LookAt()方法,该方法可以使物体发生旋转,使其z轴始终指向目标物体。再完成了旋转后,我们需要让物体沿着Z轴方向(forward)移动。这样就实现了鼠标点击控制人物走动这一功能。好了,下面我们来一起看今天的内容吧!
首先创建一个场景,我们准备一个地形Terrain和平行光Direction Light,并拖入我们事先准备好的人物模型,如图:
接下来为模型添加动画组件,并将动画的类型设置为Legacy模式,如图所示:
我们设置默认的动画为idle,接下来,我们来编写脚本代码:
using UnityEngine;
using System.Collections;
public class PeopleControl : MonoBehaviour {
//目标点坐标
private Vector3 mTargetPos;
void Start ()
{
}
void Update ()
{
//按下鼠标右键时
if(Input.GetMouseButton(1))
{
//获取屏幕坐标
Vector3 mScreenPos=Input.mousePosition;
//定义射线
Ray mRay=Camera.main.ScreenPointToRay(mScreenPos);
RaycastHit mHit;
//判断射线是否击中地面
if(Physics.Raycast(mRay,out mHit))
{
if(mHit.collider.gameObject.tag=="Terrain")
{
//获取目标坐标
mTargetPos=mHit.point;
//让主角面朝目标坐标并向目标移动
transform.LookAt(mTargetPos);
//播放奔跑动画
transform.gameObject.GetComponent<Animation>().Play("run");
transform.Translate(Vector3.forward * 0.5F);
}
}
}
//松开鼠标右键时
if(Input.GetMouseButtonUp(1))
{
transform.gameObject.GetComponent<Animation>().Play("idle");
}
}
}
将脚本绑定到角色上以后,我们就能看到下面的效果啦,哈哈:)
这就是今天的内容啦,当然我们还需要解决的问题还有如何在控制人物走动的时候避免和其它物体发生碰撞,以及后续的优化问题,这些内容我们会在后面的文章中为大家解答,谢谢大家!喜欢我请记住我的名字:秦元培,我的博客地址是: blog.csdn.net/qinyuanpei !
[Unity3D]Unity3D游戏开发之史上最简单的鼠标点击控制人物走动实现
今天呢,我们来一起实现一个在RPG中游戏中十分常见的功能,通过鼠标点击屏幕来控制人物的走动。首先来说一下原理,当我们点击屏幕时,我们按照一定的方法,将屏幕上的二维坐标转化为三维坐标,然后我们从摄像机位置发射 一条经过该点的射线,则这条射线与大地平面的交点,就是我们的目标位置。那么确定了这个位置以后,我们需要做的就是让角色从原来的位置移动到这个位置,并在其间添加角色动画即可。对于角色移动的问题,如果复杂点的画我们可能要计算移动的方向向量,并针对起点和终点进行插值计算来实现,这里我们选择一种相对简单的办法,在Unity3D中,有一个LookAt()方法,该方法可以使物体发生旋转,使其z轴始终指向目标物体。再完成了旋转后,我们需要让物体沿着Z轴方向(forward)移动。这样就实现了鼠标点击控制人物走动这一功能。好了,下面我们来一起看今天的内容吧!
首先创建一个场景,我们准备一个地形Terrain和平行光Direction Light,并拖入我们事先准备好的人物模型,如图:
接下来为模型添加动画组件,并将动画的类型设置为Legacy模式,如图所示:
我们设置默认的动画为idle,接下来,我们来编写脚本代码:
using UnityEngine;
using System.Collections;
public class PeopleControl : MonoBehaviour {
//目标点坐标
private Vector3 mTargetPos;
void Start ()
{
}
void Update ()
{
//按下鼠标右键时
if(Input.GetMouseButton(1))
{
//获取屏幕坐标
Vector3 mScreenPos=Input.mousePosition;
//定义射线
Ray mRay=Camera.main.ScreenPointToRay(mScreenPos);
RaycastHit mHit;
//判断射线是否击中地面
if(Physics.Raycast(mRay,out mHit))
{
if(mHit.collider.gameObject.tag=="Terrain")
{
//获取目标坐标
mTargetPos=mHit.point;
//让主角面朝目标坐标并向目标移动
transform.LookAt(mTargetPos);
//播放奔跑动画
transform.gameObject.GetComponent<Animation>().Play("run");
transform.Translate(Vector3.forward * 0.5F);
}
}
}
//松开鼠标右键时
if(Input.GetMouseButtonUp(1))
{
transform.gameObject.GetComponent<Animation>().Play("idle");
}
}
}
将脚本绑定到角色上以后,我们就能看到下面的效果啦,哈哈:)
这就是今天的内容啦,当然我们还需要解决的问题还有如何在控制人物走动的时候避免和其它物体发生碰撞,以及后续的优化问题,这些内容我们会在后面的文章中为大家解答,谢谢大家!喜欢我请记住我的名字:秦元培,我的博客地址是: blog.csdn.net/qinyuanpei !
发表评论
-
Unity 3D 学习笔记
2015-06-25 14:45 0http://blog.csdn.net/huang9012/ ... -
如何在Unity3d中实现和网页数据的交互
2015-06-25 13:22 0http://game.ceeger.com/Componen ... -
unity3D 如何提取游戏资源(反编译 )+代码反编译
2015-06-25 12:26 0http://bbs.9ria.com/thread-4011 ... -
糖果爱消除
2015-06-25 12:22 0 糖果爱消除 [脚本] Candy Crash重点代 ... -
unity项目简单实例代码
2015-06-25 11:51 0基础入门 1、基础入门 ... -
帧动画
2015-06-25 11:39 0private float fps = 1000.0f; p ... -
Unity3d中制作Loading场景进度条所遇到的问题
2015-06-25 11:27 788http://www.58player.com/blog-25 ... -
【Unity】技巧集合
2015-03-19 14:42 0【Unity】技巧集合 转发,请保持地址:http://bl ... -
[Unity3D]Unity3D游戏开发之使用UniSky呼风唤雨
2015-02-11 10:52 0[Unity3D]Unity3D游戏开发之使用UniSky呼风 ... -
重要的学习教程!!!!加油,一定要多看多练
2015-02-07 22:43 0http://www.unitymanual.com/topi ... -
[Unity3D]Unity3D 游戏开发之碰撞检测
2015-02-06 17:53 0大家好,欢迎大家关注由我为大家带来的Unity3D游戏开发系列 ... -
[Unity3D]Unity3D游戏开发之鼠标滚轮实现放大缩小
2015-02-06 17:51 0大家好,欢迎大家关注由我为大家带来的Unity3D游戏开发系列 ... -
[Unity3D]Unity3D游戏开发之怪物AI
2015-02-06 17:35 0好,欢迎大家关注由我为大家带来的Unity3D游戏开发系列文章 ... -
Unity3D游戏开发之使用Unity3D开发2D游戏 (一)
2015-02-06 17:23 0http://blog.csdn.net/qinyuanpei ... -
发射小球
2015-02-06 17:05 0using UnityEngine; using System ... -
【Unity技巧】制作一个简单的NPC
2015-02-06 15:26 1149http://blog.csdn.net/candycat19 ... -
Unity3D游戏中检测摄像机与人之间有无带碰撞器的遮挡物
2015-02-05 17:37 1958Unity3D游戏中检测摄像机与人之间有无带碰撞器的遮挡物。在 ... -
unity中三种调用其他脚本函数的方法
2015-02-02 16:16 1227unity中三种调用其他脚本函数的方法 第一种,被调用脚本函 ... -
CS0119 报错
2015-02-02 10:03 1488问题 :Assets/cudeCM.cs(26,36): er ...
相关推荐
在Unity3D游戏开发中,角色的行走与交互是至关重要的。本文将详细解析一个基于Unity3D的人物行走脚本示例,该脚本适用于第一人称视角(First Person Controller)。我们将探讨如何实现角色的前后左右移动、跳跃、...
在这个“html5 canvas动画 人物怪物移动 鼠标点击控制”的实例中,我们将深入探讨如何利用HTML5 Canvas技术和JavaScript实现一个简单的游戏场景,其中人物或怪物能够根据用户的鼠标点击进行移动。 首先,Canvas元素...
标题 "让图片直线移动到鼠标点击位置,类似游戏里的人物走动!" 描述了一种编程技术,它涉及图像处理和用户交互,特别是如何在屏幕上使一个图像(比如游戏中的角色)根据用户的鼠标点击位置进行直线移动。这个过程通常...
本资源中的程序实现的是2D游戏效果:地图滚动以及鼠标控制人物走动 工程由VS2010创建,请用VS2010或更高版本编译运行 本资源是零积分下载,由CSDN博客专家BlueCoder(黎小华)倾力提供,你可以结合我的配套博文来...
综上所述,使用Unity3D进行游戏开发的过程中,Terrain对象的使用和管理是游戏开发初学者必须掌握的知识点之一。通过本节内容的学习,初学者可以了解到Terrain的基本概念、创建方式、调整技巧和命名规则,为后续的...
Unity3d手机游戏开发经常用到的插件,easy touch5插件是非常实用的,可以很容易实现手游的虚拟摇杆功能控制游戏人物的走动方向。但此插件在Asset Store中是收费的,大约20美元,在这里我为同学们奉献出来了,记得...
在游戏开发中,人物的移动是至关重要的一个环节,它涉及到玩家与游戏世界的交互性。本文将详细讨论如何在Visual Studio 2013环境下,使用C语言来实现游戏中的角色自动行走和按键控制移动,并结合easyX图形库来创建...
在本示例中,“html5+js模拟人物走动”是一个使用这两种技术来实现的人物行走动画项目。这个项目的核心是利用HTML5的Canvas元素以及JavaScript的动画框架,来展示一个角色在屏幕上行走的视觉效果。 首先,HTML5的...
因此,这个游戏很可能利用了Direct3D进行场景和角色的渲染,通过DirectInput获取玩家的键盘或游戏控制器输入,控制人物的移动,并利用DirectPlay实现网络连接,使得多个玩家可以同时参与游戏。 “基本实现了人物...
这个程序的设计目标:用Silverlight实现一个浮动在页面右下角的鼠标手势控制块,让用户用鼠标手势控制页面滚动,提供更好的用户浏览体验。 设计计划: 1.制作一个浮动DIV,承载Silverlight。 2.实现鼠标移动方向与...
在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库开发一款小游戏,其中包含背景位图,并且能够通过键盘控制人物移动,同时利用双缓冲技术避免图像闪烁。MFC是微软提供的一种C++类库,它封装了...
本资源“人物走动图”是一个专为简单游戏开发设计的图像素材集,包含了一组45像素宽、60像素高的人物行走动画图片。这样的尺寸选择既能够保证在各种设备上流畅显示,又不会过于占用存储空间,对于轻量级的游戏项目来...
自制的unity AR相机,适配安卓和iOS,不需要任何外部插件。打开手机摄像头、陀螺仪相机,完美运行。
在IT行业中,尤其是在游戏开发、动画制作或者图形用户界面设计等领域,人物走动分解图(也称为帧序列或精灵动画)是一种常见的技术。本资源包包含的“人物走动分解图bmp”是一系列用于表现人物行走动作的位图图像...
在Cocos Creator中,控制游戏角色的移动是游戏开发的基础部分,尤其对于2D游戏来说更是至关重要。本总结将深入探讨几种常见的移动控制方式,包括键盘控制、触屏控制和摇杆控制,帮助开发者更好地理解并应用这些技术...
综上所述,手机游戏开发中的“人物行走图”不仅是简单的图片序列,它们承载着游戏的灵魂,赋予角色生命,同时也反映了开发者对于动画设计、性能优化和用户体验的综合考量。通过对这些要点的理解和应用,开发者能够...
"Java简单的游戏人物移动"这个项目是一个基础的Swing应用,它展示了如何实现一个简单的小游戏,让游戏人物自动移动。尽管它可能没有包含键盘监听事件来控制人物移动,但是通过预设的逻辑,人物会自动进行移动,这为...
Unity3D是一款强大的跨平台游戏开发引擎,广泛应用于2D和3D游戏制作,VR虚拟现实、AR增强现实以及实时3D应用等领域。本项目源码是基于Unity3D构建的一款汉堡餐厅经营游戏,旨在帮助开发者学习和理解Unity游戏开发的...
在游戏开发领域,让游戏角色能够根据用户的输入进行行走是一项基础且...以上就是使用VC++实现游戏中人物走动的一些核心知识点。实践中,开发者需要不断学习和实践,掌握这些技术,并根据实际项目需求进行调整和优化。