相机旋转时位置偏移的渲染问题求助
相机旋转时Player位置偏移的渲染问题求助
我正在排查相机左右旋转时出现位置偏移的问题,经检查Player的x、y坐标在旋转过程中并未发生变化,因此判定这是一个渲染问题。我需要实现旋转时Player位置保持不动的效果,恳请各位提供技术帮助。
渲染代码片段
import math as M radcos = M.cos(pa/180*M.pi) radsin = M.sin(pa/180*M.pi) wallx = [0,0,0,0] # 墙体x坐标 wally = [0,0,0,0] # 墙体y坐标 wallz = [0,0,0,0] # 墙体z坐标 wx1, wy1 = 40-px, 10-py wx2, wy2 = 40-px, 290-py socialdistfromcameradist = 0.1 wallx[0] = wx1 * radcos - wy1 * radsin wallx[1] = wx2 * radcos - wy2 * radsin wallx[2] = wallx[0] wallx[3] = wallx[1] wally[0] = wy1 * radcos + wx1 * radsin wally[1] = wy2 * radcos + wx2 * radsin wally[2] = wally[0] wally[3] = wally[1] if wally[0] <= socialdistfromcameradist and wally[1] <= socialdistfromcameradist: return near = 0.1 if wally[0] < near: wally[0] = near if wally[1] < near: wally[1] = near if wally[2] < near: wally[2] = near if wally[3] < near: wally[3] = near wallz[0] = 0-pz+((pl*wally[0])/32) wallz[1] = 0-pz+((pl*wally[1])/32) wallz[2] = wallz[0]+40 wallz[3] = wallz[1]+40 # 计算墙体在屏幕上的坐标(顶部和底部) wallx[0] = wallx[0]*FOV/wally[0]+600 wally[0] = wallz[0]*FOV/wally[0]+400 wallx[1] = wallx[1]*FOV/wally[1]+600 wally[1] = wallz[1]*FOV/wally[1]+400 wallx[2] = wallx[2]*FOV/wally[2]+600 wally[2] = wallz[2]*FOV/wally[2]+400 wallx[3] = wallx[3]*FOV/wally[3]+600 wally[3] = wallz[3]*FOV/wally[3]+400
完整代码可参考原提问中的完整实现。
内容的提问来源于stack exchange,提问作者CyberWolf Games aka Cybrock900
相关产品推荐
相关产品推荐

