本文主要是介绍遇到的transform与Quaternion问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
想要实现的是:按住鼠标不放,无论角色朝哪儿,角色朝自己的前方蓄力,2秒后放出一道剑气,剑气往角色前方飞。
结果:这道剑气本身总是朝向正上方,飞行方向倒是能往角色前方飞。
搞了很久才大概明白,transform.up记录的是一个坐标方向,Quaternion记录的是角度,这2个是不同的。
蓄力的时候记录
fangxiang = transform.up; //我理解这是此时角色朝向
QuaChaoxiang = Quaternion.Euler(transform.eulerAngles); //此时角色的旋转角度
生成剑气的时候使用
Rigidbody2D clone = Instantiate(jianqi, transform.position, QuaChaoxiang).GetComponent();
float a = fangxiang.x;
float b = fangxiang.y;
Vector2 fangxiang2D = new Vector2(a, b);
clone.velocity = fangxiang2D * 20;
之前就是把蓄力时的朝向转成四元素作为角度了给生成时的剑气,结果总是错。
而且vector3转四元数,转出来并不是(X,Y,Z,0),这个潜意识大错特错。
这篇关于遇到的transform与Quaternion问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!