gpt4 book ai didi

actionscript-3 - 如何将球扔出弧线?

转载 作者:行者123 更新时间:2023-12-04 06:24:59 25 4
gpt4 key购买 nike

我想把球扔成一个弧形,向左或向右的弧形。

这是我的代码:

var gravity = 2;
this.velocity.y += gravity;
_angle = 5;
var theta:Number;
switch(_direction) {
case "left":
theta = _angle * Math.PI/180;
this.velocity.x = Math.cos(theta) - Math.sin(theta);
break;

case "right":
theta = _angle * Math.PI/180;
this.velocity.x = Math.cos(theta) - Math.sin(theta)
break;
}

this.x += this.velocity.x;
this.y += this.velocity.y;

看起来球根本不是“弧形”,它似乎更像是一条对角线?

最佳答案

throw 时,您有两个组成部分。

  • 由于万有引力而产生的垂直加速度。这将是啊。
  • 水平分量:没有空气摩擦,这是一个恒定的速度。

  • 假设您扔球,在离开您的手的那一刻,它的速度为 v0 = (v0x, v0y) 并且位于 p0 位置。那么 v0x 将一直保持不变。

    在时间 t 球的速度将是 v(t) = (v0x, v0y + t * ay)

    对于动画的每个刻度,将 deltat * v(t) 添加到球的当前位置,您就应该设置好了。

    每次球反弹时,你应该在它反弹的表面上镜像它的速度向量并减去它总能量的一定百分比(Ekin + Epot,虽然如果它在地面上并且地面是零电位,Epot将为0),在以获得对数弹跳。

    如果您也想要空气摩擦,只需在每个动画刻度中减去总能量的一小部分。

    这里有一些代码,不是在 ActionScript 中,但我希望可读。 (ctor 的参数都是 Vector2d;clone() 隐式使用,但您可以猜到它的作用):
    class Vector2d:
    def __init__ (x, y):
    self.x = x
    self.y = y

    def add (other):
    self.x += other.x
    self.y += other.y

    def mulScalar (scalar):
    self.x *= scalar
    self.y *= scalar

    def mulVector (vector) # NOT the cross product
    self.x *= vector.x
    self.y *= vector.y

    class BouncingBall:
    AGRAV = ? #gravitational acceleration (mg)
    DELTAT = ? #time between ticks
    ELASTICITY = ? Elasticity of ball/floor

    def __init__ (self, pos, v):
    self.pos = pos
    self.v = v

    def tick (self):
    deltapos = self.v.clone ()
    deltapos.mulScalar (DELTAT)
    self.pos.add (deltapos)
    if self.pos.y <= 0: #bounce
    self.pos.y = 0 #adjust ball to ground, you need to choose DELTAT small enough so nobody notices
    self.v.mulVector (1, -1) #mirror on floor
    self.v.mulScalar (ELASTICITY)
    self.v.add (0, AGRAV * DELTAT)

    关于actionscript-3 - 如何将球扔出弧线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155837/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com