Unity3d中最简单物体的旋转移动
- void Awake (){
- }
- //初始化函数,在游戏开始时系统自动调用。一般用来创建变量之类的东西。
- void Start(){
- }
- //初始化函数,在所有Awake函数运行完之后(一般是这样,但不一定),在所有Update函数前系统自动条用。一般用来给变量赋值。
- 我们通常书写的脚本,并不会定义[ExecuteInEditMode]这个Attribute,所以Awake和Start都只有在Runtime中才会执行,文章出处【狗刨学习网】。
- using UnityEngine;
- using System.Collections;
- public class square1 : MonoBehaviour {
- public float m_speed = 1;
- protected Transform m_transform;
- //是否被拖拽
- private bool onDrag=false;
- //旋转速度
- public float speed=6f;
- //阻尼速度
- private float tempSpeed;
- //水平
- private float axisX;
- //竖直
- private float axisY;
- //鼠标移动的距离
- private float cXY;
- // Use this for initialization
- void Start () {
- //调用
- m_transform = this.transform;
- }
- // Update is called once per frame
- void Update () {
- float movev = 0;
- float moveh = 0;
- if (Input.GetKey(KeyCode.UpArrow))
- {
- movev += m_speed * Time.deltaTime;
- }
- if (Input.GetKey(KeyCode.DownArrow))
- {
- movev -= m_speed * Time.deltaTime;
- }
- if (Input.GetKey(KeyCode.RightArrow))
- {
- moveh += m_speed * Time.deltaTime;
- }
- if (Input.GetKey(KeyCode.LeftArrow))
- {
- moveh -= m_speed * Time.deltaTime;
- }
- gameObject.transform.Rotate(new Vector3(axisX,axisY,0)*Rigid(),Space.World);
- if (!Input.GetMouseButton(0))
- {
- onDrag = false;
- }
- transform.Translate(Vector3.forward*Time.captureFramerate);
- this.m_transform.Translate(new Vector3(moveh, 0, movev));
- }
- //接受鼠标按下
- void OnMouseDown()
- {
- axisX = 0f;
- axisY = 0f;
- }
- //鼠标拖拽时的操作
- void OnMouseDrag()
- {
- onDrag = true;
- axisX = -Input.GetAxis("Mouse X");
- axisY = Input.GetAxis("Mouse Y");
- cXY = Mathf.Sqrt(axisX*axisX+axisY*axisY);
- if (cXY==0f)
- {
- cXY = 1f;
- }
- }
- //计算阻尼
- float Rigid()
- {
- if (onDrag)
- {
- tempSpeed = speed;
- }
- else
- {
- if (tempSpeed>0)
- {
- tempSpeed -= speed * 2 * Time.deltaTime / cXY;
- }
- else
- {
- tempSpeed = 0;
- }
- }
- return tempSpeed;
- }
- //实现鼠标的拖拽移动
- IEnumerator OnMouse()
- {
- var camear = Camera.mainCamera;
- if (camear)
- {
- Vector3 screenPosition = camear.WorldToScreenPoint(transform.position);
- Vector3 mscreenPosition = new Vector3(Input.mousePosition.x,Input.mousePosition.y,screenPosition.z);
- Vector3 offset = transform.position - camear.ScreenToWorldPoint(mscreenPosition);
- print("drag strating:"+transform.name);
- while (Input.GetMouseButton(0))
- {
- mscreenPosition = new Vector3(Input.mousePosition.x,Input.mousePosition.y,screenPosition.z);
- transform.position = offset + camear.ScreenToWorldPoint(mscreenPosition);
- yield return new WaitForEndOfFrame();
- }
- print("drag compeleted");
- }
- }
- }
Unity3d中最简单物体的旋转移动相关推荐
- 【虚拟仿真】Unity3D中实现控制物体的旋转、移动、缩放
推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦. 一.前言 ...
- 002-实现Unity3d中触摸屏幕控制物体的旋转和缩放 代码实现
1.直接帮到物体的身上就可以了 using UnityEngine; using System.Collections; using System.IO; public class hehe : Mo ...
- Unity3D中实现简单的电影模式框架
Unity3D中实现简单的电影模式框架 游戏中,经常会有这样的需求,即播放一段电影,给玩家更好的体验.比如摄像机朝向某两个NPC,两个NPC在那里交谈之类的. 在用Unity3D制作游戏的过程中,也经 ...
- 在Unity3D中使用uGUI实现3D旋转特效
各位朋友大家好,欢迎大家关注我的博客,我是Payne,我的博客地址是http://qinyuanpei.com.最近一位朋友问我,如何在Unity引擎中实现类似<英雄联盟>中选择皮肤时 ...
- unity3D中导入的物体锚点居中
最近在做项目的时候,我们用的模型都是从别的地方下载下来的.这个时候由于unity的版本的原因导致模型的部件的中心不一致.出现锚点不在物体的中心这样对其进行旋转操作的时候就出现不了想要的效果. 步骤:新 ...
- Unity3D中角色撞击物体弹出提示框或显示对象效果
角色撞击物体弹出提示框或显示对象效果 刚开始使用的是调用SetActive方法 例: 在Start()函数中设置对象的SetActive属性为false,在函数 void start() {gameo ...
- unity3d中隐藏/显示物体方法总结 – unity3d游戏开发
在开发过程中常常需要对物体进行隐藏和显示操作,在这里总结一些: 一.设置Renderer状态 每一个可以被渲染的物体都会包含一个Renderer组件,用来渲染物体到屏幕上,如果禁用这个组件自然也就实现 ...
- unity3d中避免游戏物体绑定的音频在物体被销毁时无法播放
之前的代码段如下: public AudioSource audioSource;Update(){if(audioSource!=null){audioSource.play();Destory(g ...
- Android中实现简单的立体旋转
新建RotateAnimationZ import android.graphics.Camera; import android.graphics.Matrix; import android.vi ...
最新文章
- 美化浏览器的radio和checkbox样式
- [轉]c#从Excel中读取图片
- android html audio,html5 用audio的playbackRate属性控制播放速度在安卓手机不起作用?...
- C++轻量级微服务_『高级篇』docker容器来说什么是微服务(三)
- pmp项目变更的流程图_PMP流程图
- 我的Java开发学习之旅------Java经典排序算法之冒泡排序
- 基于 React.js + redux + bootstrap 的 RubyChina 示例
- 【案例】MySQL count操作优化案例一则
- wpsmac历史版本_wps for mac 官方版
- 关于如何在代码里区分条码扫描扫描到是是一维码还二维码
- 使用cntv(原cctvbox-中国网络电视台)下载视频
- 微信后台基于时间序的海量数据冷热分级架构设计实践
- 小程序生成二维码分享朋友圈的功能
- php 获取手机屏幕宽度,Swift-使用UIScreen类获取屏幕尺寸
- 三星 android 模拟器,三星Galaxy Tab模拟器
- 陕西省2011年教师资格证教育基础理论知识考试报名通知
- java 布林运算_java11教程--布尔计算
- 基础课程《普通地质学》笔记
- 【期末复习资料】嵌入式系统及应用
- SuperMap GIS点云数据处理QA