当前位置: 首页 > news >正文

Unity功能——通过按键设置物体朝左/右旋转(含C#转xlua版)

博文简介:

开发场景:unity的3d场景;        功能:当设定的键被按下时,进行物体朝左/右旋转;

适用范围:本文代码适用于设置3d物体朝左右旋转,也适用于设置UI对象朝左右旋转;

注:可自定义按键作为物体旋转的按键,这里使用常用的A,D键来控制物体的左右旋转;

若功能需求为:根据鼠标朝左/右旋转;限制物体旋转的角度;

可参考本人的另一篇博文:Unity功能——物体随鼠标朝左/右旋转(带角度限制)

1、监测按键触发

C#:        if (Input.GetKey(KeyCode.D)){...}

xlua:      if CS.UnityEngine.Input.GetKey(CS.UnityEngine..KeyCode.A) then ...  end

if (Input.GetKey(KeyCode.D)){...}
--C# 改 xlua版if CS.UnityEngine.Input.GetKey(CS.UnityEngine..KeyCode.A) then--要实现的需求的功能代码
end
2、设置物体旋转

C#:        transform.Rotate(Vector3.forward * rotateSpeed);

xlua:     self.transform:Rotate(CS.UnityEngine.Vector3.forward * self.rotateSpeed)

transform.Rotate(- Vector3.forward * rotateSpeed);
--C# 改 xlua版,注意使用冒号调用函数self.transform:Rotate(CS.UnityEngine.Vector3.forward * self.rotateSpeed)
3、完整功能代码

 注:使用hotfix把C#转xlua时,对应的C#脚本上需要:

(1)脚本引用using Xlua;(2)类上面添加[Hotfix]标签;(3)方法上添加[LuaCallCSharp]标签

private void MoveItem(){if (Input.GetKey(KeyCode.A))transform.Rotate(-Vector3.forward * rotateSpeed);else if (Input.GetKey(KeyCode.D))transform.Rotate(Vector3.forward * rotateSpeed);
}
xlua.private_accessible(CS.类名)
xlua.hotfix(CS.类名,'方法名',function(self)if CS.UnityEngine.Input.GetKey(CS.UnityEngine.KeyCode.A) thenself.transform:Rotate(CS.UnityEngine.Vector3.forward * self.rotateSpeed)elseif CS.UnityEngine.Input.GetKey(CS.UnityEngine.KeyCode.D) thenself.transform:Rotate(-CS.UnityEngine.Vector3.forward * self.rotateSpeed)end
end)
http://www.lryc.cn/news/361641.html

相关文章:

  • 泛微ecology开发修炼之旅
  • PostgreSQL的视图pg_locks
  • 元宇宙NFG结合IPO线上营销模型合理降税
  • Python打印当前目录下,所有文件名的首字母
  • 程序员应该有什么职业素养?
  • 【PostgreSQL17新特性之-冗余IS [NOT] NULL限定符的处理优化】
  • Flink的简单学习二
  • 如何提高员工的工作主动性?
  • FFmpeg PCM编码为AAC
  • React@16.x(16)Render Props
  • STM32 定时器问题
  • CSS学习笔记目录
  • 随笔-我在武汉一周了
  • Python 爬虫零基础:探索网络数据的神秘世界
  • 微信小程序的view的属性值和用法
  • Python优化、异常处理与性能提升技巧
  • Flink状态State | 大数据技术
  • go语言方法之方法值和方法表达式
  • TDMQ CKafka 版弹性存储能力重磅上线!
  • 24、Linux网络端口
  • Mysql全文搜索和LIKE搜索有什么区别
  • elementplu父级页面怎么使用封装子组件原组件的方法
  • el-date-picker选择开始日期的近半年
  • C++
  • nginx源码阅读理解 [持续更新,建议关注]
  • 笔试训练2
  • 构建坚不可摧的Web安全防线:深入剖析二阶注入与全面防御策略
  • (4) qml动态元素
  • 深度神经网络——什么是梯度下降?
  • 基本元器件 - 二极管