想要实现的是:按住鼠标不放,无论角色朝哪儿,角色朝自己的前方蓄力,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),这个潜意识大错特错。
本文探讨了Unity中角色释放剑气的方向问题。作者尝试让角色朝当前方向蓄力并发射剑气,但剑气始终朝上。通过调试发现,记录角色方向时使用了transform.up而非实际面向角度。
2520

被折叠的 条评论
为什么被折叠?



