如何在手机上 用unity3d 教程显示视角内所有的面数?

怎样旋转指定的角度?_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:19,015贴子:
怎样旋转指定的角度?收藏
比如,原始旋转(0,330,30)执行一下:
transform.Rotate(0, -30, 30);检查面板会变成(14.449,56.56505)而不是期望的(0,300,60)这个好像与欧拉角的什么锁有关;我直接把旋转加到transform的欧拉角上可以解决问题,但角度达到一定值就会转不动了。怎么解决?
Vector3 rotation = new Vector3(angle);transform.eulerAngles =用这个试试呢,如果动画的话可以用itween插件的rotatoto方法或者transform.Rotate(new Vector3(0, 1, 0), Time.fixedDeltaTime*rotationSpeed);第一个是旋转方向,第二个设定速度 要放在update里边
unity中按欧拉角转动的话,按照Z轴X轴Y轴的顺序依次转动,转动轴不随着物体转动,这样transform.Rotate(0, -30, 30)表示绕Z轴转过30度后,再绕未转动前的Y轴再转-30度,等价与先绕Y轴转过-30度,然后绕同样转过-30度的Z轴再转30度。所以不能达到(0,300,60)度。欧拉角就是这么让人晕。用四元数是对的。有个问题跟楼主探讨下,两个物体A和B,具体一点A是轮胎的网格,B是控制这个轮胎的轮胎碰撞器,用B来控制A的转动比较容易,因为B物体只可能绕Y轴转动,用A.rotation=B.rotating*Quaternion.Euler(new Vector3(X轴增量〔滚动,由RPM计算〕,Y轴增量〔转向,由steerangle得到〕,0))即可实现轮胎跟随轮胎碰撞器运动。现在我希望用A控制B,即由轮胎网格的转向控制轮胎碰撞器的steerangle,但是轮胎本身在转动,y轴不停地在偏转,这又应该如何实现呢?
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
为兴趣而生,贴吧更懂你。或跟我从零基础学习Unity3D开发--游戏中第三人称视角的Camera的控制 - *小学弟 - 推酷
跟我从零基础学习Unity3D开发--游戏中第三人称视角的Camera的控制 - *小学弟
不好意思,最近一直没跟新,主要是遇到一些事。什么事呢?(找了一份自己非常喜欢的工作拿到offer但是体检上面陈旧性肺结核被公司再次拒绝,这已经是第4次被这个拒绝了)我想在这里说一下,我是一名应届毕业生,在两年前被查出感染了肺结核病毒,经过积极治疗已经好了一年了,但是这个病的一个特点就是即使好了也会在肺部留下一点疤痕,在临床治疗好后的肺结核叫陈旧性肺结核。为什么我在再这里要说这个事呢?因为我想给大家普及一下肺结核的知识,其实肺结核只要连续3个月检测阴性那么传染性可以忽略。治疗好后和正常人一样。虽然在在肺部留下了伤疤。就和您手上的一些伤疤一样。如果您身边有患有肺结核的朋友请不要歧视他多给他一些关心,我的室友听说我患病学校要求我回家休息一个月,但是我的室友们都要求我留下,每天都和往常一样生活没有给我一点点感觉到他们远离我,我很感谢我的室友们,在这里如果有公司的管理人员看到我也想对您说,请不要歧视我们,我们享有同样的求职权利,我们治疗好后和正常人一样,请不要用异样的眼光看,你们可以去咨询一下医生。
&Unity学习QQ群,欢迎进来讨论学习。
摄像机旋转原理图:
上面讲了一些题外话,下面进入正题。
首先看看效果:
下面是加载摄像机上的代码:
using UnityE
using System.C
public class MainCameraController : MonoBehaviour {
&&& public Camera MainC
&&& public GameObject MainP
&&& private int RotationS
&&& private int ScaleS
&&& private int MouseLeftKey = 0;
&&& private int MouseRightKey = 1;
&&& private float MinScaledistance = 30f;
&&& private float MaxScaledistance = 80f;
&&& // Use this for initialization
&&& void Start () {
&&&&&&& RotationSpeed = 50;
&&&&&&& ScaleSpeed = 2;
&&&&&&& MainCamera.transform.LookAt(MainPerson.transform.position);
&&& // Update is called once per frame
&&& void Update () {
&&& void LateUpdate()
&&&&&&& MouseLeftFunction();
&&&&&&& MouseRightFunction();
&&&&&&& MouseCenterFunction();&&
&&& void MouseLeftFunction()
&&&&&&& //鼠标左键
&&&&&&& if (Input.GetMouseButton(MouseLeftKey))
&&& void MouseRightFunction()
&&&&&&& //鼠标右键
&&&&&&& if (Input.GetMouseButton(MouseRightKey))
&&&&&&&&&&& float distanceX = Input.GetAxis(&Mouse X&) * RotationS
&&&&&&&&&&& MainCamera.transform.RotateAround(MainPerson.transform.position, Vector3.up, distanceX * Time.deltaTime);
&&& void MouseCenterFunction()
&&&&&&& //鼠标中间滚轮向前滚动
&&&&&&& if (Input.GetAxis(&Mouse ScrollWheel&) & 0)
&&&&&&&&&&& float CurrentDistance = MainCamera.fieldOfV
&&&&&&&&&&& CurrentDistance += ScaleS
&&&&&&&&&&& if (CurrentDistance & MaxScaledistance)
&&&&&&&&&&&&&&& MainCamera.fieldOfView = MaxS
&&&&&&&&&&& else
&&&&&&&&&&&&&&& MainCamera.fieldOfView = CurrentD
&&&&&&& //鼠标中间滚轮向后滚动
&&&&&&& if (Input.GetAxis(&Mouse ScrollWheel&) & 0)
&&&&&&&&&&& float CurrentDistance = MainCamera.fieldOfV
&&&&&&&&&&& CurrentDistance -= ScaleS
&&&&&&&&&&& if (CurrentDistance & MinScaledistance)
&&&&&&&&&&&&&&& MainCamera.fieldOfView = MinS
&&&&&&&&&&& else
&&&&&&&&&&&&&&& MainCamera.fieldOfView = CurrentD
&代码中的MainCamera、MainPerson对外开放的变量赋值是在这里:
这个场景素材我会传到群里面
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见

我要回帖

更多关于 unity3d 的文章

 

随机推荐