位置: 编程技术 - 正文

Unity3D 里IK手柄的用运(unity手柄圆盘)

编辑:rootadmin
实现功能:1.当点击鼠标右键,左右手扶住武器, 进入射击状态 2.再次点击鼠标右键,武器消失,取消射击状态 解决方法: ①将武器放置为头部的子物体 ②在武器体下面设置3个子空物体,分别作为子弹出射点,左手放置位置,右手放置位置。 void OnAnimatorIK(int layerIndex) { float aim = animator.GetFloat("Aim"); if(layerIndex == 0){ if(target!=null) { //设置武器瞄准目标的位置 Vector3 tPosition = target.transform.position; tPosition.y = tPosition.y &#; 0.2f*(tPosition- animator.rootPosition).magnitude; animator.SetLookAtPosition(tPosition); animator.SetLookAtWeight(aim,0.5f,.5f,0.0f,0.5f); //设置武器消失与出现 if (bazoo != null) { float fire = animator.GetFloat("Fire"); Vector3 pos = new Vector3(-0.f, -0.f, -0.f); Vector3 scale = new Vector3(0.2f, 0.f, 0.2f); pos.x -= fire * 0.2f; scale = scale * aim; bazoo.transform.localScale = scale; 当aim&#;为0时,大小变成了0,武器就消失了 // bazoo.transform.localPosition = pos; } } } if (layerIndex == 1 ) { //设置左手IK权重 if(leftHand!=null) { animator.SetIKPosition(AvatarIKGoal.LeftHand,leftHand.transform.position); animator.SetIKPositionWeight(AvatarIKGoal.LeftHand,aim); } if(rightHand!=null) { //设置右手IK权重 animator.SetIKPosition(AvatarIKGoal.RightHand,rightHand.transform.position); animator.SetIKPositionWeight(AvatarIKGoal.RightHand,aim); } } } //发射子弹 //射击逻辑 if(Input.GetButton("Fire1")&&fire<0.f&&aim>0.f) { animator.SetFloat("Fire",1); if(bullet!=null&&FirePosition!=null) { GameObject newBullet = Instantiate(bullet,FirePosition.transform.position,Quaternion.Euler(0,0,0)) as GameObject; Rigidbody rb = newBullet.GetComponent<Rigidbody>(); if(rb!=null) { rb.velocity = FirePosition.transform.TransformDirection(Vector3.forward*); } } } 源代码:using UnityEngine; using System.Collections;public class fireAndAnimation : MonoBehaviour {protected Animator animator;public GameObject target = null; public GameObject leftHand = null; public GameObject rightHand = null; public GameObject bazoo = null; public GameObject bullet = null; public GameObject FirePosition = null;private bool load = false;// Use this for initializationvoid Start () {animator = GetComponent<Animator>();}// Update is called once per framevoid Update () {if (animator){float aim = animator.GetFloat("Aim");float fire = animator.GetFloat("Fire");// 瞄准逻辑 if (Input.GetButton("Fire2")){if(!load && ( aim<0.)){load = true;} else if (load && aim >0. ){load = false;}} animator.SetFloat("Aim",load?1:0,0.1f,Time.deltaTime);//射击逻辑if(Input.GetButton("Fire1")&&fire<0.f&&aim>0.f){animator.SetFloat("Fire",1);if(bullet!=null&&FirePosition!=null){GameObject newBullet = Instantiate(bullet,FirePosition.transform.position,Quaternion.Euler(0,0,0)) as GameObject; Rigidbody rb = newBullet.GetComponent<Rigidbody>();if(rb!=null){ rb.velocity = FirePosition.transform.TransformDirection(Vector3.forward*);}} }else{animator.SetFloat("Fire",0,0.1f,Time.deltaTime);}float h = Input.GetAxis("Horizontal");float v = Input.GetAxis("Vertical");animator.SetFloat("Speed", h*h&#;v*v); animator.SetFloat("Direction", h, 0.f, Time.deltaTime);}} void OnAnimatorIK(int layerIndex){float aim = animator.GetFloat("Aim");if(layerIndex == 0){if(target!=null){Vector3 tPosition = target.transform.position;tPosition.y = tPosition.y &#; 0.2f*(tPosition- animator.rootPosition).magnitude;animator.SetLookAtPosition(tPosition);animator.SetLookAtWeight(aim,0.5f,.5f,0.0f,0.5f);if (bazoo != null) { float fire = animator.GetFloat("Fire"); Vector3 pos = new Vector3(-0.f, -0.f, -0.f); Vector3 scale = new Vector3(0.2f, 0.f, 0.2f); pos.x -= fire * 0.2f; scale = scale * aim; bazoo.transform.localScale = scale; bazoo.transform.localPosition = pos; } }}if (layerIndex == 1 ){if(leftHand!=null){animator.SetIKPosition(AvatarIKGoal.LeftHand,leftHand.transform.position);animator.SetIKPositionWeight(AvatarIKGoal.LeftHand,aim);}if(rightHand!=null){animator.SetIKPosition(AvatarIKGoal.RightHand,rightHand.transform.position);animator.SetIKPositionWeight(AvatarIKGoal.RightHand,aim);}} }}

推荐整理分享Unity3D 里IK手柄的用运(unity手柄圆盘),希望有所帮助,仅作参考,欢迎阅读内容。

Unity3D 里IK手柄的用运(unity手柄圆盘)

文章相关热门搜索词:unity 手柄插件,unity3d手机端摇杆,unity手柄控制,unity xbox手柄,unity3d手机端摇杆,unity手柄控制,unity手柄圆盘,unity手柄圆盘,内容如对您有帮助,希望把文章链接给更多的朋友!

Unity Shader 常用函数列表 CG标准函数库和C的标准函数库类,Cg提供了一系列内建的标准函数。这些函数用于执行数学上的通用计算或通用算法(纹理映射等),例如,需要求取入

System.Diagnostics.Process.Start操作文件和文件夹(Unity3D) 最近在学习U3D,会写一些脚本工具,操作文件。比如在unity中打开文本:varlogPath=Application.persistentDataPath/log;varfileName=newDirectoryInfo(logPath).GetFiles().OrderBy(t=

[置顶] unity3d Human skin real time rendering 真实模拟人皮实时渲染 先放出结果图片。。。由于网上下的模型是拼的,所以皮,脸颊,嘴唇看起来像存在裂痕,解决方式是加入曲面细分和置换贴图进行一定隆起,但是博

标签: unity手柄圆盘

本文链接地址:https://www.jiuchutong.com/biancheng/384517.html 转载请保留说明!

上一篇:Unity3D选择性渲染技术(unity 3渲2)

下一篇:Unity Shader 常用函数列表(unity shader saturate)

  • 印花税申报表计税依据怎么填
  • 公司怎么进行网上注册
  • 增值税普通发票和电子普通发票的区别
  • 增值税留抵抵欠税政策解读
  • 手写报销单据格式图片
  • 生产型企业怎么退税
  • 企业所得税成本费用大于发票金额的原因
  • 小汽车的增值税怎么算
  • 季度不满30万免增值税如何结转
  • 装载机属于哪种车型
  • 公司业务章需要报备吗
  • 视同销售不开票如何计算增值税?
  • 企业重组个人股东个人所得税
  • 预算控制方法主要包括
  • 本月实现利润总额的25%计算并结转应交所得税
  • 差旅费报销怎么做账
  • 免税货物开成含税率的怎么报税?
  • 企业名称变更后原名称还能使用吗
  • 合伙企业的投资者李某以企业资金
  • 企业所得税成本确认原则
  • 收到投资分红要缴纳企业所得税吗?
  • 股权变更印花税双方都要交吗
  • 水电费的发票要交税吗
  • 增值税附加税什么情况交
  • 收回长期股权投资账务处理成本法
  • 政府专项拨款账务处理
  • 支付装修押金会退吗
  • 公司账户替别人过账
  • 2021最新版眼保健视频
  • 证券资金利息
  • word2013压缩图片
  • php实验步骤
  • codeinteger
  • 加班餐费税前扣除问题
  • 安全生产专用设备目录
  • php面向对象面试题
  • 怎么查发票的真假鉴定
  • 开发间接费用会计分录
  • 金融商品转让收入
  • 配置eAccelerator和XCache扩展来加速PHP程序的执行
  • 处置二手固定资产
  • laravel视频教程
  • 高温补贴 个人所得税
  • 担保损失怎么处理好
  • 小程序新版本
  • 发票金额有小数可以取整数吗
  • vue3当中如何监听新增的属性
  • 房屋租赁费属于什么税收分类编码
  • Programming tutorials and source code examples
  • 利润表增加利润怎么做
  • 法定的盈余公积是什么
  • 技术服务型企业企业所得税率
  • 限定性净资产的限定主体是
  • 生产车间发放工资
  • 资产减值损失的借贷方向
  • 税务新增办税人员
  • 征地费用会计分录
  • 将MySQL help contents的内容有层次的输出方法推荐
  • 代理记账的业务规范
  • 以前年度费用退回
  • 低值易耗品费用计入产品成本的方式有哪几种
  • 分公司非独立核算企业所得税税率
  • 营业外支出罚没支出包括
  • 固定资产的主要特征
  • 未分配利润期初余额怎么录入
  • windows server 2008 64位MySQL5.6免安装版本配置方法图解
  • windowsandbox
  • macbook 手写
  • explorer.exe进程100%
  • linux操作系统b
  • yum下载已安装的包
  • win10预览版21277
  • Linux中通过Socket文件描述符寻找连接状态介绍
  • 关于模型视图变化的说法
  • Ext JS 4实现带week(星期)的日期选择控件(实战二)
  • jquery中odd是什么意思
  • Python 常用库
  • 社保银行代扣收费吗
  • 国家税务局网上江苏电子税务局官网
  • 深圳献血奖励标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设