开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:449

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 221|回复: 6

[基本操作] 我想让物体每次x旋转-90度

[复制链接]  [移动端链接]
4四处流浪
374/500
排名
5654
昨日变化
3

3

主题

72

帖子

374

积分

Rank: 4

UID
91867
好友
0
蛮牛币
472
威望
0
注册时间
2015-4-13
在线时间
124 小时
最后登录
2017-8-4
发表于 2017-4-17 13:14:15 | 显示全部楼层 |阅读模式
20蛮牛币
transform.Rotate(-90, 0, 0, Space.Self);
可以实现,不过没有平滑的效果,我想平滑的x旋转-90度

我用了DoTween的插件,里面有个本地旋转动画,代码
this.transform.DOLocalRotate(new Vector3(transform.localEulerAngles.x-90, transform.localEulerAngles.y,transform.localEulerAngles.z), 1f);

但是这样不知道是不是写法问题,还是不对,我当前是0,0,0度的话,它-90度就是270,0,0,当前270的时候,它的轴就是0,180,180,我再转的时候,他又变成270,0,0了。。


我只是想每次平滑的x旋转90度,求帮助,谢谢

回复

使用道具 举报

6蛮牛粉丝
1422/1500
排名
1310
昨日变化
3

2

主题

197

帖子

1422

积分

Rank: 6Rank: 6Rank: 6

UID
157507
好友
1
蛮牛币
2456
威望
0
注册时间
2016-7-18
在线时间
505 小时
最后登录
2017-8-17
QQ
发表于 2017-4-17 13:14:16 | 显示全部楼层
[C#] 纯文本查看 复制代码
public class SlerpRotate : MonoBehaviour {

	// Use this for initialization
	void Start () {
		
	}

    float cur_x = 0;
    void OnGUI()
    {
        if (GUI.Button(new Rect(50, 50, 100, 100), "Rotate90"))
        {
            cur_x += -90;
        }
    }

    bool st = false;
	// Update is called once per frame
	void Update () {
      
            gameObject.transform.rotation = Quaternion.Slerp(gameObject.transform.rotation,
              Quaternion.Euler(cur_x, 0.0f, 0.0f), Time.deltaTime * 2.5f);
    }
}

回复

使用道具 举报

6蛮牛粉丝
1060/1500
排名
2213
昨日变化
10

2

主题

197

帖子

1060

积分

Rank: 6Rank: 6Rank: 6

UID
28898
好友
0
蛮牛币
1273
威望
0
注册时间
2014-6-9
在线时间
367 小时
最后登录
2017-8-17
发表于 2017-4-17 14:04:03 | 显示全部楼层
Vector3 v = transform.localEulerAngles;
        v.x -= 90;
        transform.DOLocalRotate(v, 3,  RotateMode.Fast);

回复

使用道具 举报

4四处流浪
374/500
排名
5654
昨日变化
3

3

主题

72

帖子

374

积分

Rank: 4

UID
91867
好友
0
蛮牛币
472
威望
0
注册时间
2015-4-13
在线时间
124 小时
最后登录
2017-8-4
 楼主| 发表于 2017-4-17 15:57:20 | 显示全部楼层
还是不对,我当前是0,0,0度的话,它-90度就是270,0,0,当前270的时候,它的轴就是0,180,180,我再转的时候,他又变成270,0,0了。。
跟this.transform.DOLocalRotate(new Vector3(transform.localEulerAngles.x-90, transform.localEulerAngles.y,transform.localEulerAngles.z), 1f);的效果是一样的

回复

使用道具 举报

4四处流浪
374/500
排名
5654
昨日变化
3

3

主题

72

帖子

374

积分

Rank: 4

UID
91867
好友
0
蛮牛币
472
威望
0
注册时间
2015-4-13
在线时间
124 小时
最后登录
2017-8-4
 楼主| 发表于 2017-4-17 15:58:31 | 显示全部楼层
俊杰识天下 发表于 2017-4-17 14:04
Vector3 v = transform.localEulerAngles;
        v.x -= 90;
        transform.DOLocalRotate(v, 3,  Ro ...

还是不对,我当前是0,0,0度的话,它-90度就是270,0,0,当前270的时候,它的轴就是0,180,180,我再转的时候,他又变成270,0,0了。。
跟this.transform.DOLocalRotate(new Vector3(transform.localEulerAngles.x-90, transform.localEulerAngles.y,transform.localEulerAngles.z), 1f);的效果是一样的

1,2是时候是对的,第三次的时候就不对了

回复

使用道具 举报

4四处流浪
374/500
排名
5654
昨日变化
3

3

主题

72

帖子

374

积分

Rank: 4

UID
91867
好友
0
蛮牛币
472
威望
0
注册时间
2015-4-13
在线时间
124 小时
最后登录
2017-8-4
 楼主| 发表于 2017-4-17 17:46:22 | 显示全部楼层
lesterlzy 发表于 2017-4-17 17:21
[mw_shl_code=csharp,true]public class SlerpRotate : MonoBehaviour {

        // Use this for initialization ...

谢谢大神帮助

回复

使用道具 举报

6蛮牛粉丝
1422/1500
排名
1310
昨日变化
3

2

主题

197

帖子

1422

积分

Rank: 6Rank: 6Rank: 6

UID
157507
好友
1
蛮牛币
2456
威望
0
注册时间
2016-7-18
在线时间
505 小时
最后登录
2017-8-17
QQ
发表于 2017-4-17 17:50:41 | 显示全部楼层

客气了。。偶尔来转转~~
[发帖际遇]: lesterlzy 发帖时在路边捡到 1 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表