Unity3D 冲锋效果.角色拖尾效果
《魔兽世界》,本人最喜欢的网络游戏,如果你玩过战士,你一定对战士的冲锋非常熟悉,现在接触 Unity3D,因为最近用到了刀光、拖尾特效,所以就想做一个类似战士的冲锋效果,在本场景用到的拖尾效果可以查看我的另一篇文章,里面有详细的介绍,刀光效果来自 Unity3D Assets 商店,只是把原作者的例子代码整理了一下,变得非常简单实用的类。
最终效果如下:
先来搭建我们的场景,如图:
然后给角色的模型添加一个空对象,并且加上 MeshRender,并且设置好材质为 WeaponTrail,另外给这个空对象添加 WeaponTrail.cs 对象,设置好相关属性,如图:
下面的代码是修改另一篇文章的 TrailsBladeMaster.cs 类,新的代码如下:
复制代码
代码如下:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
[AddComponentMenu(PocketRPG/Blade Master)]
public class TrailsBladeMaster : MonoBehaviour
{
/// summary
/// 拖尾效果
/// /summary
public WeaponTrail weaponSwipe;
public AnimationClip idleClip;
public AnimationClip runClip;
/// summary
/// 移动速度
/// /summary
public float speed = 20.0f;
public Camera mainCamera;
private Animation animation;
protected TrailsAnimationController animationController;
protected CharacterController characterController;
/// summary
/// 运行状态
/// /summary
private bool isMoving = false;
/// summary
/// 目标位置
/// /summary
private Vector3 targetPosition;
/// summary
/// 移动向量
/// /summary
private Vector3 moveDirection;
protected void Awake ()
{
this.animation = this.GetComponentAnimation ();
this.animationController = this.GetComponentTrailsAnimationController ();
this.characterController = this.GetComponentCharacterController ();
this.animation.CrossFade (this.idleClip.name);
}
protected void Start ()
{
if (this.weaponSwipe != null) this.animationController.AddTrail (this.weaponSwipe);
}
protected void Update ()
{
if (!this.isMoving Input.GetMouseButtonDown(0))
{
this.targetPosition = this.GetWorldPosition();
if(this.targetPosition != Vector3.zero)
{
this.isMoving = true;
this.moveDirection = (this.targetPosition - this.transform.position).normalized * this.speed;
this.transform.rotation = Quaternion.LookRotation(new Vector3(this.moveDirection.x, 0f, this.moveDirection.z));
this.animation.CrossFade(this.runClip.name);
if(this.weaponSwipe != null) this.weaponSwipe.StartTrail(1f, 0f);
}
}
if (this.isMoving)
{
if(!this.IsArrivePosition())
{
this.characterController.Move(this.moveDirection * Time.deltaTime);
}
else
{
this.animation.CrossFade(this.idleClip.name);
if(this.weaponSwipe != null) this.weaponSwipe.ClearTrail();
this.transform.position = this.targetPosition;
this.isMoving = false;
}
}
}
/// summary
/// 验证是否到达目标地点
/// /summary
/// returnsctrue/c if this instance is arrive position; otherwise, cfalse/c./returns
private bool IsArrivePosition()
{
Vector3 currentDirection = (this.targetPosition - this.transform.position).normalized;
if (this.CalculateNormalized (currentDirection) == this.CalculateNormalized (this.moveDirection) * -1)
{
return true;
}
return false;
}
/// summary
/// 规范化比较向量
/// /summary
/// returnsThe normalized./returns
/// param name=directionDirection./param
private Vector3 CalculateNormalized(Vector3 direction)
{
Vector3 value = Vector3.zero;
value.x = direction.x 0 ? 1 : -1;
value.z = direction.z 0 ? 1 : -1;
return value;
}
/// summary
/// 获取世界位置
/// /summary
/// returnsThe world position./returns
private Vector3 GetWorldPosition()
{
Ray ray = this.mainCamera.ScreenPointToRay(Input.mousePosition);
RaycastHit raycastHit;
if(Physics.Raycast(ray, out raycastHit))
{
if(raycastHit.collider.gameObject.name == Terrain)
{
return raycastHit.point;
}
}
return Vector3.zero;
}
}
最后给角色对象挂载 TrailsAnimationController.cs 组件以及 TrailsBladeMaster.cs 组件,同时还需要添加一个角色控制器(CharacterController),因为我们用这个来驱动角色移动,如图:
最后运行可以查看效果,点击地形,角色向目标点移动,并带有拖尾效果。
百度网盘下载地下: 密码: t41j
- 1上海搬家公司价格揭秘:如何选择最划算的搬家服务
- 2上海公兴搬家搬场价格解析:如何避免隐形收费?
- 3加入奉贤专业保洁团队,开启你的职业新篇章
- 4专业江北搬家公司推荐:无忧搬家,从此轻松搬迁
- 5上海专业公司搬家服务:如何选择最适合你的搬家团队?
- 6精挑细选:重庆客房保洁服务招聘大揭秘
- 7深圳观澜搬家公司:贴心服务与专业搬家体验的完美结合
- 8上海货车搬家全攻略:如何选择靠谱服务并避免踩坑
- 9南京保洁服务的优缺点解析:如何选择适合的保洁服务
- 10在金水区寻找优质搬家服务的实用指南
- 11上海搬家货运价格全解析:如何省钱又省心?
- 12无忧长途搬家:2023年北京搬家攻略与公司推荐
- 13无忧搬家:亚运村搬家公司的选择与小贴士
- 14选择杭州三替搬家公司,轻松搬家无忧虑
- 15郑州市搬家服务全解析:如何选择最适合你的搬家公司
- 16轻松搬家:成都小型搬家公司的选择与服务
- 17青岛开发区搬家服务全攻略:选择最佳搬家公司,轻松应对搬家难题
- 18选择西安搬家公司:怎样找到最合适的搬家服务
- 19在北京选择搬家公司的全攻略,轻松搬家不再难!
- 20在北京选择搬家公司必看:省心搬家小贴士
- 21选择深圳市搬家公司,你必须知道的那些事
- 22深圳找正规搬家公司?看这一篇就够了!
- 23昆明搬家服务指南:选择适合你的搬家公司
- 24选择天津市搬家公司的秘诀:让搬家变得轻松无忧
- 25丰台搬家公司推荐:服务优质,价格透明,搬家无忧
- 26在松江区找搬家公司?教你如何选择最合适的服务
- 27郑州搬家服务全攻略:如何选择合适的搬家公司?
- 28邯郸搬家无忧,从此告别繁琐的搬家烦恼
- 29普通搬家公司究竟能为您提供什么样的服务?
- 30快速高效!深圳石岩搬家公司推荐与选择指南