Unity3D 第三人称的游戏角色的单选和移动

来源:互联网 发布:raphael js 地图 编辑:程序博客网 时间:2024/05/10 02:34

      个人比较喜欢制作策略类的第三人称游戏,可以召唤怪物,不知道大家喜不喜欢!如果喜欢的话就支持我一下吧!当然,如果你有一些好的功能和想法,可以一起讨论研究!欢迎大家来这里做客!

        所以今天来分享一下最近做的项目中的,游戏角色的单选和移动! 我用的是Unity3D中的自动寻路<NavMeshAgent>组件来实现的,下面是游戏角色的组件,要看仔细哦!

          首先在游戏对象的下面添加一个2D -> Sprite 的精灵图片(图片可以自行添加) 的子对象叫ColorBG 作为一个选中的标记

           下面动画系统Animator的截图

                好了,下面就是代码部分了
<pre name="code" class="csharp">using UnityEngine;using System.Collections;using UnityEngine.UI;/// <summary>/// 功能: 游戏对象的单选和移动/// 创建者: VioletTD/// 修改时间: 2015年11月3日 22:50/// 感谢: Me加油!/// </summary>public class RabbitController : Singleton<RabbitController>{public bool didSelectPlayer;//是否被选中private GameObject colorBG;//精灵图片的游戏对象,下面使用GameObject.Find("ColorBG") 找到并实例化private Animator animator;//用于获取到游戏对象本身的动画系统private RaycastHit hit;//射线的命中点private Vector3 targetPos;//用于记录玩家的移动到的(寻路组件)的目标点void Awake () {animator = GetComponent<Animator>();//获取游戏对象的动画系统didSelectPlayer = false;//初始化是否被选中 为假    游戏对象没有被选中colorBG.SetActive (false);//初始化精灵图片的标示为 没有被选中targetPos = Vector3.zero;//初始化玩家移动的目标点为  Vector3(0,0,0)GetComponent<NavMeshAgent>().speed = 0.2f;//寻路组件的游戏对象的移动速度为0.2f}void Update () {PlayerMoveMethod ();//在Update中调用游戏对象移动的方法}#region PlayerMoveMethod()void PlayerMoveMethod()//游戏对象的移动放{if(Input.GetMouseButtonDown (1))//如果点击鼠标的右键{if(didSelectPlayer)//如果游戏对象被选中{Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);//创建从摄像机发射到鼠标的摄像if(Physics.Raycast (ray,out hit))//物理静态类的射线投射方法{if (hit.collider.CompareTag ("Ground")) //如果射线命中的为地面{targetPos = hit.point;//把射线命中的地面的点赋值给 游戏对象移动的目标点GetComponent<NavMeshAgent>().SetDestination (targetPos);//设置寻路组件的目的地为  游戏对象移动的目标点transform.LookAt (targetPos);//游戏对象看向该点animator.SetFloat ("Walk",0.2f);//设置Float类型的"Walk"  值为0.2f  大于0.1就会播放行走的动画}} }}if(Input.GetMouseButtonDown (0) && didSelectPlayer)//如果游戏对象在选中状态下     再次点击鼠标左键   设置游戏对象为未选中状态{didSelectPlayer = false;//设置为falsecolorBG.SetActive (false);//标记背景为不显示}if(!didSelectPlayer)//如果玩家在没有选中的状态 就会停止移动{GetComponent<NavMeshAgent>().SetDestination (transform.position);//设置寻路组件的目的地为本身animator.SetFloat ("Walk",0f);// Float类型的"Walk"  值为0  小于0.1就会停止播放行走动画}}#endregionvoid OnMouseUpAsButton()//如果鼠标点击并抬起{didSelectPlayer = true;//设置选中为TruecolorBG.SetActive (true);//脚下的圆圈为True  显示}}


谢谢大家的支持!!!!!!!

0 0
原创粉丝点击